{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "kidvMM-11Yjl"
   },
   "source": [
    "# **Protein Language Models (Intuition): A First Look at Modeling Syntax and Semantics of the Known  Protein Universe**\n",
    "\n",
    "\n",
    "By Dhuvi Karthikeyan, Aaron Menezes, Elisa Gómez de Lope, and Rakshit Singh"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "Z2_ZL8Etpxbi"
   },
   "source": [
    "Inspired by the success of Large Language Models (LLMs) such as BERT, T5, and GPT, that have demonstrated state of the art performance on sentiment analysis, summarization, question answering, and classification tasks, protein language models (pLMs) have demonstrated similar sweeping success across a broad array of protein specific tasks. These tasks include contact prediction, mutational landscape fitness prediction, binding site prediction, property prediction, and much more! In this tutorial, we explore the fundamental intuition driving the success of protein language models, by developing a strong intuition of what is actually happening under the hood and the resulting pros and cons of their usage. If you'd like to learn more about language models in various other domains, check out DeepChem's very own ChemBERTa, a large language model trained on the chemical domain [here](https://deepchem.io/tutorials/transfer-learning-with-chemberta-transformers/).\n",
    "\n",
    "\n",
    "<a target=\"_blank\" href=\"https://colab.research.google.com/github/deepchem/deepchem/blob/master/examples/tutorials/ProteinLM_Tutprial0.ipynb\">\n",
    "  <img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/>\n",
    "</a>\n",
    "\n",
    "#### Table of Contents:\n",
    "1. [Introduction](#introduction)\n",
    "2. [What is a language model?](#what-is)\n",
    "3. [Methods for learning language](#methods)\n",
    "4. [How do Protein Language Models (pLMs) work?](#how-to)\n",
    "5. [MSA-aware vs non-MSA-aware protein language models](#msa)\n",
    "6. [Evolutionary statistics of Hemoglobin 𝛽 and its ProtBERT learned representation](#hemoglobin)\n",
    "7. [Concluding thoughts](#conclusion)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "-kt9GAwz9zAP"
   },
   "source": [
    "## **1. Introduction** <a name=\"introduction\"></a>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "zPsqCjLV3Bbd"
   },
   "source": [
    "This DeepChem tutorial is designed to serve as an introductory primer on protein language models, a powerful and versatile method of processing protein sequence information inspired by methods from the natural language space. Over the past decade, natural language processing has shown the strength of using learned representations to encapsulate the semantic meaning of text data. Notable models like word2vec [[1]](https://arxiv.org/abs/1301.3781) and GloVe [[2]](https://aclanthology.org/D14-1162/) proved that self-supervised pre-training on large, unlabeled corpora effectively creates robust feature embeddings that maintain similarity and analogy in language. However, these models were limited in utility by their context-free embeddings. The advent of context-aware models, starting with BERT [[3]](https://aclanthology.org/N19-1423/), led to numerous sequence models applicable beyond language domains. In biology, self-supervised pre-training on protein language models has achieved state-of-the-art performance in various tasks by deriving context-aware amino acid embeddings that can be finteuned to capture information on structure [[4]](https://www.biorxiv.org/content/10.1101/2020.12.15.422761v1) and function [[5]](https://www.biorxiv.org/content/early/2023/08/24/2023.08.23.554486.full.pdf) of proteins.\n",
    "\n",
    "This tutorial aims to provide an overview of the concepts and intuition of protein language models that are needed to work with them and understand their input/outputs, strengths, failure modes. We skip over the detailed breakdown of their architecture, but invite the community to add content as they see fit in the form of a pull request to build upon this.\n",
    "\n",
    "**Disclaimer**: For brevity sake, we make some assumptions with familiarity to the multi-layered perceptron, neural networks, and learning by gradient descent. Additionally we assume some fluency with probability theory on matters such as discrete vs. continuous distributions, likelihood, and conditional distributions. We provide links on non-obvious topics and concepts to external sources wherever necessary to bring the audience a vetted and beginner friendly source to start learning on the more complicated topics. Follow along for a high-level overview into the reason that protein language models have been so successful across a broad range of tasks."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "vKVLg5F10RDb"
   },
   "source": [
    "## **2. What is a language model?**<a name=\"what-is\"></a>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "VxGZU2IErQE6"
   },
   "source": [
    "Under the hood, all language models are nothing more than probability distributions over tokens, or discrete sub-sequences. In natural language, a very intuitive set of tokens are the words of a language, or perhaps even the characters. Both have their own pros and cons. For simplicity, let's work with words as tokens here, though this changes for proteins. Since the learned distribution is over discrete units (words), this distribution is a [categorical distribution](https://en.wikipedia.org/wiki/Categorical_distribution), not a [continuous](https://en.wikipedia.org/wiki/Probability_distribution) one. To make this more concrete, take for example a common language model that you have likely interacted with many times in your life: text auto-complete. Text auto-complete is a conditional language model that takes the previous words you have written and then computes the [conditional probability](http://www.stat.yale.edu/Courses/1997-98/101/condprob.htm) over all the words in its vocabulary and returns the highest probability words based on the context. If you'd like a very intuitive and fine-grained explanation for both the form and function of language models, the 3Blue1Brown [walk-through](https://www.3blue1brown.com/lessons/gpt) is a great resource that breaks down the basics of the architecture, the flow of information, and the process of training a specific LLM (GPT). In this section we skip over the architecture of the language models and instead leave them as a black-box, focusing more on the how language models learn from sequences to better motivate their use in the protein domain.\n",
    "\n",
    "A simple way to visualize what a language model is doing in the background is to think of the language model as updating and indexing a huge square matrix of [transition probabilities](https://en.wikipedia.org/wiki/Stochastic_matrix) of size $D x D$, where $D$ is the vocabulary size of the model. Here vocabulary size refers to the number of unique words or sub-words that make up the state space of the categorical distribution. So a model that only knows the words ['a', 'boy', 'cute', 'is', 'student', 'the' 'walking'] has a vocabulary size of 7. If we start off with an untrained model that is randomly initialized, we can use a [uniform](https://www.investopedia.com/terms/u/uniform-distribution.asp) initialization we would get a transition matrix that looks something like this where we introduce a special word to designate the end of sequence (EOS):\n",
    "\n",
    "|         | a    | boy  | cute | is   |student| the     | walking | EOS |\n",
    "|---------|------|------|------|------|-------|---------|---------|-----|\n",
    "| a       | 0.125| 0.125| 0.125| 0.125| 0.125 | 0.125   | 0.125   |0.125|\n",
    "| boy     | 0.125| 0.125| 0.125| 0.125| 0.125 | 0.125   | 0.125   |0.125|\n",
    "| cute    | 0.125| 0.125| 0.125| 0.125| 0.125 | 0.125   | 0.125   |0.125|\n",
    "| is      | 0.125| 0.125| 0.125| 0.125| 0.125 | 0.125   | 0.125   |0.125|\n",
    "| student | 0.125| 0.125| 0.125| 0.125| 0.125 | 0.125   | 0.125   |0.125|\n",
    "| the     | 0.125| 0.125| 0.125| 0.125| 0.125 | 0.125   | 0.125   |0.125|\n",
    "| walking | 0.125| 0.125| 0.125| 0.125| 0.125 | 0.125   | 0.125   |0.125|\n",
    "\n",
    "\n",
    "However, if we look at some of the transition probabilities, we can immediately see that the model is not very good. For example, the probability of the word 'a' coming after 'a' should be close to 0. Same goes for the word 'the' coming after 'a'. It's pretty clear that we need some way of training this model so that we can get some realistic transition probabilities. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "S6XGKjBeQ0MN"
   },
   "source": [
    "## **3. Methods for learning language**<a name=\"methods\"></a>\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "FyVE65gMuEmv"
   },
   "source": [
    "#### 3.1 Causal Modeling"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "01xUgNuOuG7i"
   },
   "source": [
    "The first language models were trained on the principle of [causal language modeling](https://huggingface.co/docs/transformers/en/tasks/language_modeling), where the model is tasked with next word prediction during each training step.\n",
    "\n",
    "$$\\text{The quick brown fox jumped over the lazy -----.}$$\n",
    "$$ P(x_t|x_{<t}) = ? $$\n",
    "\n",
    "After enough rounds of this training protocol the model learns a much more plausible distribution over the words - something that looks like the following:\n",
    "\n",
    "|         | a    | boy  | cute | is   |student |  the  | walking| EOS  |\n",
    "|---------|------|------|------|------|---------|-------|--------|-----|\n",
    "| a       | 0.0  | 0.5  | 0.1  | 0.05 | 0.25    | 0.05  |0.05    | 0.0 |\n",
    "| boy     | 0.15 | 0.0  | 0.1  | 0.4  | 0.05    | 0.15  |.05     | 0.1 |\n",
    "| cute    | 0.05 | 0.2  | 0.0  | 0.1  | 0.25    | 0.1   |0.0     | 0.3 |\n",
    "| is      | 0.2  | 0.0  | 0.3  | 0.0  | 0.0     | 0.2   |0.3     | 0.0 |\n",
    "| student | 0.15 | 0.05 | 0.1  | 0.5  | 0.0     | 0.05  |.05     | 0.1 |\n",
    "| the     | 0.0  | 0.5  | .2   | 0.0  | 0.25    | 0.0   |0.05    | 0.0 |\n",
    "| walking | 0.1   | .0   | .05  | .2   | .05    | 0.35 |0.0      | 0.3 |\n",
    "| EOS     | 0.0  | 0.0   | 0.0 | 0.0   | 0.0    | 0.0   | 0.0    | 1.0 |\n",
    "\n",
    "Here we can see that the model has learned that the words above are not typically repeated twice in a row. It assigns subject words ['boy', 'student'] after the word 'the' with higher probability than the verbs ['is', 'walking']. If we start at 'the' and sample the most likely words at each transition we can generate the following sentence as a path through the model: 'the' -> 'boy' -> 'is' -> 'walking' -> 'EOS'. This mode of sampling a word at every time step and then conditioning on the previously sampled words is known as auto-regressive generation.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "-4yEH3Gxd1Jm"
   },
   "source": [
    "#### 3.2 The Power of Neural Networks\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "j520mprxuKi3"
   },
   "source": [
    "A key point here that motivates the use of increasingly complicated neural networks for language modeling tasks is that with our illustrative example, we have the transition probability matrix and each step we sample from it like a [markov chain](https://en.wikipedia.org/wiki/Markov_chain). However, there are longer range dependencies in language that are not captured simply by conditioning on the previous word. So why not construct matrices that map transition probabilities between pairs of words or triples, or even more? Beyond issues of computational feasibility, this model would require that all possible n-grams would have been seen at least once during training, which greatly limits the models learning and usability. Neural networks have emerged as a great way of using large contexts and generating a neural representation of the sequence before indexing a loose transition matrix that maps between the neural representation and all the words in the vocabulary. For this reason, we often see in the language model space the distribution over the vocabulary from the last layer of a neural network as a one-dimensional probability distribution rather than a probability matrix. Keeping this in mind, we can see how these language models accommodate another method of learning language that draws from the context before **AND** after a word.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "Jyjr7GIMeJTK"
   },
   "source": [
    "#### 3.3 Masked Language Modeling\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "6lOXlNIKuMeK"
   },
   "source": [
    "\n",
    "Causal language modeling has a key drawback in that sometimes the necessary context to make sense of a word in a sentence comes after the word and not before. Masked language modeling is like causal modeling, but makes use of the fact that context may come before and after the word of interest.\n",
    "\n",
    "$$\\text{The quick brown [MASK] jumped over the lazy dog.}$$\n",
    "$$ P(x_t|x_{! t}) = ??$$\n",
    "\n",
    "This approach is what underlies the powerful BERT [[3]](https://arxiv.org/pdf/1810.04805) language model, where they used a masking rate of about 15\\% of the words. Amazingly, this approach has been tried on sequences other than language and has been shown to be a robust model for learning the syntax and semantics of sequential data of various modalities including time series data, videos, and yes even proteins!"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "7t3099ixYJC0"
   },
   "source": [
    "## **4. How do Protein Language Models (pLMs) work?**<a name=\"how-to\"></a>\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "k5qt8XNWr8rD"
   },
   "source": [
    "\n",
    "Inspired by the success of [large language models (LLMs)](https://magazine.sebastianraschka.com/p/understanding-large-language-models) in a broad variety of natural language tasks, protein language models represent a powerful new approach in understanding the syntax and semantics of protein sequences [[6]](https://arxiv.org/abs/2007.06225). These models are trained on using the masked language modeling objective to mask out portions of the sequence and infer what amino acids belong across billions of protein sequences, learning to identify patterns and relationships within the sequences that are crucial for their structure and function. This step is called pre-training and it imbues the language model with a general understanding of the structural dependencies within the language, in this case proteins.\n",
    "\n",
    "An optional second training step known as [fine-tuning](https://medium.com/@bijit211987/the-evolution-of-language-models-pre-training-fine-tuning-and-in-context-learning-b63d4c161e49) can be applied on a pre-trained protein language model, to further train it on a specific task with protein sequence examples annotated with labels. In practice, starting from the pretrained weights has shown to have better performance than starting from randomly initialized weights as the model simply learns how to use strong representations of the inputs (learned during pretraining) instead of jointly learning the representation AND how to use it.  PLMs finetuned on the mappings between specific protein families or functional classes can significantly enhance predictive power compared to non-pretrained models, and can be applied in a number of different use cases, such as predicting binding sites or the effects of mutations.\n",
    "\n",
    "\n",
    "One of the most compelling benefits of PLMs is their ability to capture coevolutionary relationships within and across protein sequences [[7]](https://www.biorxiv.org/content/10.1101/2024.01.30.577970v1.full.pdf). In the same way that words in a sentence co-occur to convey coherent meaning, amino acid residues in a protein sequence co-evolve to maintain the protein's structural integrity and functionality. PLMs capture these coevolutionary patterns, allowing for the prediction of how changes in one part of a protein may affect other parts. Thus, from a design perspective, the directed evolution task is an area where PLMs offer substantial advantages. In a directed evolution experiment, a naturally occurring protein can be mutated according to any arbitrary heuristic and is then checked if a desired function has improved. Since PLMs capture intra-sequence conditional distributions, this process can be vastly streamlined by masking portions of the protein we wish to 'mutate' and sampling from the distribution of what amino acids are strong candidates to occur given the rest of the sequence. PLMs thus have the potential to significantly reduce experimental burden by identify promising candidates a higher hit rate.\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "Wo2gCyR1f2r6"
   },
   "source": [
    "#### 4.1 Reconciling Sequence and Structure\n",
    "\n",
    "Some protein language models combine in their training input amino acid sequence data with structural data, such as 3D coordinates of atoms in the protein. The goal is to explicitly incorporate structural information information, aiming to enhance the representation and ultimately prediction of unseen protein structure and functions. This is in contrast to sequence-only models that implicitly model structure which is more closely conserved across proteins via homology.\n",
    "\n",
    "Models like ESM-1b [[4]](https://www.biorxiv.org/content/10.1101/2020.12.15.422761v1.full.pdf) and ESM-2 [[8]](https://www.biorxiv.org/content/10.1101/2022.07.20.500902v3) are examples of sequence-only pLMs that do not explicitly incorporate 3D structural information. These sequence-based pLMs have demonstrated impressive performance on a variety of protein function prediction tasks by learning patterns from large protein sequence datasets.\n",
    "However, the lack of structural information can limit the generalization capabilities of sequence-only PLMs. This is true especially for applications heavily dependent on protein structure such as contact prediction. Moreoever, the inclusion of structural information helps overcome the distributional biases that exist in the training datasets of sequences.\n",
    "\n",
    "Structure-aware pLMs like S-PLM[[9]](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC10441326/) and ESM-Fold [[8]](https://www.biorxiv.org/content/10.1101/2022.07.20.500902v3) are trained on both sequence and structural information, and in turn generate protein representations that encode both sequence and structural information. These models use various methods such as multi-view contrastive learning to align the sequence and structure representations in a shared latent space (S-PLM). The structural awareness enables them to achieve comparable or superior performance to specialized structure-based methods or sequence-based pLMs, particularly for applications that heavily rely on protein structure.\n",
    "\n",
    "Interestingly, the recently released ESM-3 [[10]](https://www.evolutionaryscale.ai/blog/esm3-release) pLM reasons over sequence, structure, and function, meaning that for each protein, its sequence, structure, and function are extracted, tokenized, and partially masked during pre-training.\n",
    "\n",
    "![image.png](https://www.biorxiv.org/content/biorxiv/early/2024/05/13/2023.08.06.552203/F1.large.jpg?width=800&height=600&carousel=1)\n",
    "*The framework of S-PLM and lightweight tuning strategies for downstream supervised learning. a, The framework of S-PLM: During pretraining, the model inputs both the amino acid sequences and contact maps derived from protein structures simultaneously. After pretraining, the ESM-Adapter that generates the AA-level embeddings before the projector layer is used for downstream tasks. The entire ESM-Adapter model can be fully frozen or learnable through lightweight tuning. b, Architecture of the ESM-Adapter. c, Adapter tunning for supervised downstream tasks. d, LoRA tuning for supervised downstream tasks is implemented. Adapted from [[9]](https://www.biorxiv.org/content/10.1101/2023.08.06.552203v3).*\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "Vcom52dnIyKu"
   },
   "source": [
    "## **5. MSA-aware vs non-MSA-aware protein language models**<a name=\"msa\"></a>\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "4R07OZlqZ79p"
   },
   "source": [
    "Multiple Sequence Alignment (MSA) is a method used to align three or more biological sequences (protein or nucleic acid) to identify regions of similarity that may indicate functional, structural, or evolutionary relationships. MSAs are a cornerstone in bioinformatics for tasks such as phylogenetic analysis, structure prediction, and function annotation.\n",
    "\n",
    "In the context of pLMs, MSA provides evolutionary context to the representations of protein sequences. PLMs can be MSA-aware and non-MSA-aware:\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "ya4wWBpgZ--N"
   },
   "source": [
    "#### **MSA-aware models:**\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "t3gceaUEaDpG"
   },
   "source": [
    "MSA-aware models, such as the MSA Transformer [[11]](https://proceedings.mlr.press/v139/rao21a.html), Evoformer (used in AlphaFold) [[12]](https://www.nature.com/articles/s41586-021-03819-2) and ESM-MSA [[11]](https://proceedings.mlr.press/v139/rao21a.html), are trained on datasets that include MSAs as input to incorporate evolutionary information and relationships between sequences to learn richer representations. They align multiple homologous sequences to capture conserved and variable regions. The rationale is that conserved regions often indicate functionally or structurally important parts of the protein, while variable regions can provide insights into evolutionary divergence and adaptation.\n",
    "\n",
    "MSA-aware models can provide deeper insights into protein function and structure due to the evolutionary context. However, they are computationally intensive and require high-quality MSAs, which may not be available for all protein families.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "NZSyfCkhaM7u"
   },
   "source": [
    "#### **Non-MSA-aware models:**\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "APTpzkFgaPg-"
   },
   "source": [
    "Non-MSA-aware models, such as ESMFold (ESM-2)[[8]](https://www.biorxiv.org/content/10.1101/2022.07.20.500902v3), ProtBERT [[6]](https://arxiv.org/abs/2007.06225) and TAPE, treat each protein sequence independently and do not explicitly incorporate evolutionary information from MSAs. They are trained on large datasets of individual protein sequences, learning patterns and representations directly from the sequence data.\n",
    "\n",
    "While they can generalize well to diverse sequences and are computationally efficient, they may miss out on the evolutionary context that can be crucial for certain tasks.\n",
    "\n",
    "<img src=\"https://cdn.prod.website-files.com/621e95f9ac30687a56e4297e/64a8d21628b03e0f9f71a4fc_V2_1677884143661_5f927638-5fb9-40ac-9301-8f25c3bcf649.png\" alt=\"image.png\" width=\"800\">\n",
    "\n",
    "\"*Multiple Sequence Alignment\". BioRender.*\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "HyM2wrECaRxe"
   },
   "source": [
    "#### **Benefits and challenges of MSA-aware models:**\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "6NmYwiBmaTFc"
   },
   "source": [
    "- Evolutionary insight: MSAs provide evolutionary information, highlighting conserved residues that are often critical for protein function and structure.\n",
    "- Improved predictions: By incorporating evolutionary context, MSA-aware models can improve performance on tasks such as secondary structure prediction, contact prediction, and function annotation.\n",
    "- Functional and structural understanding: MSAs help in identifying functionally important regions and understanding the structural constraints of proteins.\n",
    "- Computational complexity: Generating and processing MSAs is computationally expensive and time-consuming.\n",
    "- Data availability: High-quality MSAs are not available for all protein families, especially those with few known homologs.\n",
    "- Model complexity: MSA-aware models are more complex and require sophisticated architectures to effectively utilize the evolutionary information.\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "Wh418E_maWGK"
   },
   "source": [
    "Other considerations:\n",
    "- The performance benchmark of both MSA-aware and not MSA-aware for predicting the 3D structure of proteins, as well as their function and other properties is currently an active topic of research.\n",
    "- Interestingly, MSA-free models have reported ability to efficiently generate sufficiently accurate MSAs that can be used as input for the MSA-aware models.\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "#### Without further ado, lets explore some of the properties of protein language models in the wild!\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "YmeQ4fyq38_o"
   },
   "source": [
    "## **6. Evolutionary statistics of Hemoglobin 𝛽 and its ProtBERT learned representation**<a name=\"hemoglobin\"></a>\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "H3_kaOZXuQcG"
   },
   "source": [
    "\n",
    "![hemoglobin.png](https://www.researchgate.net/profile/Lakna-Panawala/publication/313841668/figure/fig1/AS:463461898559488@1487509335507/Structure-of-Hemoglobin.png)\n",
    "\n",
    "Image Source: *Adapted from \"Représentation simplifiée de l'hémoglobine et de l'hème\". Wikimedia Commons.*\n",
    "\n",
    "\n",
    "Hemoglobin is the protein responsible for transporting oxygen from the lungs to all the cells of our body via red blood cells. Hemoglobin is a great protein to interrogate the behaviors of protein language models as it is highly conserved in certain regions across species, and also slightly variable in other places. What would we expect the distribution over amino acids to look like if we mask out a highly conserved region? What about a highly diverse region? Let's find out.\n",
    "\n",
    "\n",
    "**Hemoglobin Sequence Homology across closely related mammals** (from [[13]](https://www.nature.com/articles/s41598-019-50619-w)):\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "WxRwDnAGHU08"
   },
   "outputs": [],
   "source": [
    "hemoglobin_beta = {\n",
    "'human':\n",
    "\"MVHLTPEEKSAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFESFGDLSTPDAVMGNPKVKAHGKKVLGAFSDGLAHLDNLKGTFATLSELHCDKLHVDPENFRLLGNVLVCVLAHHFGKEFTPPVQAAYQKVVAGVANALAHKYH\",\n",
    "'chimpanzee':\n",
    "\"MVHLTPEEKSAVTALWGKVNVDEVGGEALGRLLVVYPWTORFFESFGDLSTPDAVMGNPKVKAHGKKVLGAFSDGLAHLDNLKGTFATLSELHCDKLHVDPENFRLLGNVLVCVLAHHFGKEFTPPVQAAYQKVVAGVANALAHKYH\",\n",
    "'camel':\n",
    "\"MVHLSGDEKNAVHGLWSKVKVDEVGGEALGRLLVVYPWTRRFFESFGDLSTADAVMNNPKVKAHGSKVLNSFGDGLNHLDNLKGTYAKLSELHCDKLHVDPENFRLLGNVLVVVLARHFGKEFTPDKQAAYQKVVAGVANALAHRYH\",\n",
    "'rabbit':\n",
    "\"MVHLSSEEKSAVTALWGKVNVEEVGGEALGRLLVVYPWTQRFFESFGDLSSANAVMNNPKVKAHGKKVLAAFSEGLSHLDNLKGTFAKLSELHCDKLHVDPENFRLLGNVLVIVLSHHFGKEFTPQVQAAYQKVVAGVANALAHKYH\",\n",
    "'pig':\n",
    "\"MVHLSAEEKEAVLGLWGKVNVDEVGGEALGRLLVVYPWTQRFFESFGDLSNADAVMGNPKVKAHGKKVLQSFSDGLKHLDNLKGTFAKLSELHCDQLHVDPENFRLLGNVIVVVLARRLGHDFNPNVQAAFQKVVAGVANALAHKYH\",\n",
    "'horse':\n",
    "\"*VQLSGEEKAAVLALWDKVNEEEVGGEALGRLLVVYPWTQRFFDSFGDLSNPGAVMGNPKVKAHGKKVLHSFGEGVHHLDNLKGTFAALSELHCDKLHVDPENFRLLGNVLVVVLARHFGKDFTPELQASYQKVVAGVANALAHKYH\",\n",
    "'bovine':\n",
    "\"M**LTAEEKAAVTAFWGKVKVDEVGGEALGRLLVVYPWTQRFFESFGDLSTADAVMNNPKVKAHGKKVLDSFSNGMKHLDDLKGTFAALSELHCDKLHVDPENFKLLGNVLVVVLARNFGKEFTPVLQADFQKVVAGVANALAHRYH\",\n",
    "'sheep':\n",
    "\"M**LTAEEKAAVTGFWGKVKVDEVGAEALGRLLVVYPWTQRFFEHFGDLSNADAVMNNPKVKAHGKKVLDSFSNGMKHLDDLKGTFAQLSELHCDKLHVDPENFRLLGNVLVVVLARHHGNEFTPVLQADFQKVVAGVANALAHKYH\"\n",
    "}\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "zPXaXdRzHVNA"
   },
   "source": [
    "As we can see there is a great degree of overlap between the hemoglobin $\\beta$ subunits across the animal kingdom. The part of the hemoglobin sequence that is essential to the function of carrying oxygen is the part that binds to the heme group. This is handled by a single amino acid, namely the Histidine (H) near position 92 on the beta chain, in the middle of the underlined subsequences above. Unsurprsingly, given its functional importance, the amino acid (H) at position is unchanged across all species. Can a language model recapitulate this?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "5zOIZ4Uh0Zuw"
   },
   "source": [
    "### **ProtBERT learned representation of Hemoglobin 𝛽**\n",
    "\n",
    "ProtBERT [[6]](https://arxiv.org/abs/2007.06225) is a BERT style protein language model that was trained via masked amino acid modeling on Uniref100 [[14]](https://doi.org/10.1093/bioinformatics/btm098), a dataset consisting of 217 million protein sequences, and 88B amino acids. The Uniref database contains deduplicated protein sequences from UniProt where they are clustered together, and thus deduplicated, given the threhold of sequence identity between species. Uniref100 takes 100% sequence identity, while Uniref90 does 90% and Uniref50% has a cutoff of 50%. As such, ProtBERT was trained on the largest of these databases. Lets load up ProtBERT and see what it looks like."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 1000,
     "referenced_widgets": [
      "5537ae1f22b64160b6e7b3b1573b3020",
      "6f34f4f6b9a844f4a507abf70abd94e4",
      "bfb40ea607674c6ea98fc43f84833c73",
      "7dd720f97e7943fdb36dae1d5fcb503d",
      "0b6885e41bc24fbeb33f88f890d7c3ce",
      "432735bfcf004424b47d29d5ad3cb4fd",
      "cf7f11cf14624cc78e61d86ee9783f76",
      "20f8520f699c48cfaad32973fee81de1",
      "a854e18172624d309c3359d11ae83d62",
      "ab4f7ecc4a474bbb94dfc73133782fe0",
      "cf96508ebc134d5ea45dfa6868e6c876",
      "d5f890d8e1984e558c3edbaee1ec0720",
      "35e1ba83f783465ab6dd2a30deb49287",
      "b384e03e3218483c95d6391e9f1cd477",
      "e1623cab7d6b488cb8338a593bd505eb",
      "0a996c3d341944e3b016fbdfa2482d81",
      "200f0774813a48beb26ac82c636195ee",
      "84d0c80748ee4179b64faf373aabefd8",
      "155048008c574fdcb1ff904183661740",
      "4d11a4a0e0c240aabf95f1349823b417",
      "01020f39f289443f9fec2eac3636fefd",
      "0e3ef2c0f23a45d5a77eb31829b92cd0",
      "2a80012db2af445fa78fe56d3bbf36ba",
      "862a9d6e0c724e6cbb0d88b190baffa7",
      "171e49b74fc44fd795052b8d070a3fc1",
      "d72effedc4034314a7402b0ebc954bc2",
      "5abbe798d3504d809a345d40e1553e11",
      "c6246afc10434d0dadbddd7d5aee73d4",
      "e88d768f704f434e8b71710d723d2ba6",
      "8d3f3e59a89743e882efa436b2e05a66",
      "2ea4febfba4949d48995c83919987e78",
      "38e960076a1544e1839fad1241cca1e8",
      "8dab74867907459eadfe11b81f8cbe03",
      "e80b4d94e21a459a85d06dbaf7c29279",
      "7f1d00dc860d48c69d13ed069c12ef69",
      "023851e5188d41a890b17cb6e236caa1",
      "4b697d612a72423aa65748b65c05537a",
      "fb4026dafa9744ecaf274a9fb0fe3581",
      "aa905a48d416488b82ee2e548a6b5aa8",
      "d3516e30545f49a9b4b0e18c01fc93ff",
      "c909aaaef30d4344ab7b21bf068f9fb3",
      "26b32664819844e5ab2e4bcad3abc4d1",
      "eaf6cdbe79cb44e499323beaddab75ad",
      "e63d5e686add4639937eccc60ff407ec",
      "3d72a85022c94b97bdb94d9f46a9b9da",
      "ec9e167aea0e4c509ebce436d3450e0e",
      "1061921125a64766a930d61f4f5aa2d2",
      "a9de2c2093a142b49aa6bc8f506c990a",
      "9053133a85d0404c8fe3a8dd9435618b",
      "67bde85985a4431b816b56d175c57d0b",
      "6463f3b196f44ba5bb9d13c211671517",
      "eb44fa9b5ceb493da8908c117c1ab1a0",
      "7afafd68b1c943ab91d2ee5b09e108e8",
      "46a0b691511849039aafe95f3a65257b",
      "e051e38900704299b465b87e8efef207"
     ]
    },
    "id": "7JJH4LM_0gVk",
    "outputId": "39468aa9-c271-4b28-edea-113e76ee51c2"
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/usr/local/lib/python3.10/dist-packages/huggingface_hub/utils/_token.py:89: UserWarning: \n",
      "The secret `HF_TOKEN` does not exist in your Colab secrets.\n",
      "To authenticate with the Hugging Face Hub, create a token in your settings tab (https://huggingface.co/settings/tokens), set it as secret in your Google Colab and restart your session.\n",
      "You will be able to reuse this secret in all of your notebooks.\n",
      "Please note that authentication is recommended but still optional to access public models or datasets.\n",
      "  warnings.warn(\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "5537ae1f22b64160b6e7b3b1573b3020",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "tokenizer_config.json:   0%|          | 0.00/86.0 [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "d5f890d8e1984e558c3edbaee1ec0720",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "vocab.txt:   0%|          | 0.00/81.0 [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "2a80012db2af445fa78fe56d3bbf36ba",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "special_tokens_map.json:   0%|          | 0.00/112 [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/usr/local/lib/python3.10/dist-packages/huggingface_hub/file_download.py:1132: FutureWarning: `resume_download` is deprecated and will be removed in version 1.0.0. Downloads always resume when possible. If you want to force a new download, use `force_download=True`.\n",
      "  warnings.warn(\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "e80b4d94e21a459a85d06dbaf7c29279",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "config.json:   0%|          | 0.00/361 [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "3d72a85022c94b97bdb94d9f46a9b9da",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "pytorch_model.bin:   0%|          | 0.00/1.68G [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Some weights of the model checkpoint at Rostlab/prot_bert were not used when initializing BertForMaskedLM: ['bert.pooler.dense.bias', 'bert.pooler.dense.weight', 'cls.seq_relationship.bias', 'cls.seq_relationship.weight']\n",
      "- This IS expected if you are initializing BertForMaskedLM from the checkpoint of a model trained on another task or with another architecture (e.g. initializing a BertForSequenceClassification model from a BertForPreTraining model).\n",
      "- This IS NOT expected if you are initializing BertForMaskedLM from the checkpoint of a model that you expect to be exactly identical (initializing a BertForSequenceClassification model from a BertForSequenceClassification model).\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "BertForMaskedLM(\n",
       "  (bert): BertModel(\n",
       "    (embeddings): BertEmbeddings(\n",
       "      (word_embeddings): Embedding(30, 1024, padding_idx=0)\n",
       "      (position_embeddings): Embedding(40000, 1024)\n",
       "      (token_type_embeddings): Embedding(2, 1024)\n",
       "      (LayerNorm): LayerNorm((1024,), eps=1e-12, elementwise_affine=True)\n",
       "      (dropout): Dropout(p=0.0, inplace=False)\n",
       "    )\n",
       "    (encoder): BertEncoder(\n",
       "      (layer): ModuleList(\n",
       "        (0-29): 30 x BertLayer(\n",
       "          (attention): BertAttention(\n",
       "            (self): BertSdpaSelfAttention(\n",
       "              (query): Linear(in_features=1024, out_features=1024, bias=True)\n",
       "              (key): Linear(in_features=1024, out_features=1024, bias=True)\n",
       "              (value): Linear(in_features=1024, out_features=1024, bias=True)\n",
       "              (dropout): Dropout(p=0.0, inplace=False)\n",
       "            )\n",
       "            (output): BertSelfOutput(\n",
       "              (dense): Linear(in_features=1024, out_features=1024, bias=True)\n",
       "              (LayerNorm): LayerNorm((1024,), eps=1e-12, elementwise_affine=True)\n",
       "              (dropout): Dropout(p=0.0, inplace=False)\n",
       "            )\n",
       "          )\n",
       "          (intermediate): BertIntermediate(\n",
       "            (dense): Linear(in_features=1024, out_features=4096, bias=True)\n",
       "            (intermediate_act_fn): GELUActivation()\n",
       "          )\n",
       "          (output): BertOutput(\n",
       "            (dense): Linear(in_features=4096, out_features=1024, bias=True)\n",
       "            (LayerNorm): LayerNorm((1024,), eps=1e-12, elementwise_affine=True)\n",
       "            (dropout): Dropout(p=0.0, inplace=False)\n",
       "          )\n",
       "        )\n",
       "      )\n",
       "    )\n",
       "  )\n",
       "  (cls): BertOnlyMLMHead(\n",
       "    (predictions): BertLMPredictionHead(\n",
       "      (transform): BertPredictionHeadTransform(\n",
       "        (dense): Linear(in_features=1024, out_features=1024, bias=True)\n",
       "        (transform_act_fn): GELUActivation()\n",
       "        (LayerNorm): LayerNorm((1024,), eps=1e-12, elementwise_affine=True)\n",
       "      )\n",
       "      (decoder): Linear(in_features=1024, out_features=30, bias=True)\n",
       "    )\n",
       "  )\n",
       ")"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "### Step 1. Download ProtBERT Weights from the HF repo\n",
    "from transformers import BertForMaskedLM, BertTokenizer, pipeline\n",
    "tokenizer = BertTokenizer.from_pretrained(\"Rostlab/prot_bert\", do_lower_case=False )\n",
    "model = BertForMaskedLM.from_pretrained(\"Rostlab/prot_bert\")\n",
    "model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "Z4x5F6WEtrg5",
    "outputId": "1ccea2af-7a3e-4b94-9f2e-534b79d05daf"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "M V H L T P E E K S A V T A L W G K V N V D E V G G E A L G R L L V V Y P W T Q R F F E S F G D L S T P D A V M G N P K V K A H G K K V L G A F S D G L A H L D N L K G T F A T L S E L [MASK] C D K L H V D P E N F R L L G N V L V C V L A H H F G K E F T P P V Q A A Y Q K V V A G V A N A L A H K Y H\n"
     ]
    }
   ],
   "source": [
    "### Step 2. Mask the F8 Histidine of Hemoglobin B Subunit\n",
    "human_heme = list(hemoglobin_beta['human'])\n",
    "human_heme[92] = \"[MASK]\"\n",
    "masked_heme = ' '.join(human_heme)\n",
    "print(masked_heme)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "ipjw0hbduKhW",
    "outputId": "75e2c078-dd7e-4f5a-8074-01465b00e91a"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'input_ids': tensor([[ 2, 21,  8, 22,  5, 15, 16,  9,  9, 12, 10,  6,  8, 15,  6,  5, 24,  7,\n",
       "         12,  8, 17,  8, 14,  9,  8,  7,  7,  9,  6,  5,  7, 13,  5,  5,  8,  8,\n",
       "         20, 16, 24, 15, 18, 13, 19, 19,  9, 10, 19,  7, 14,  5, 10, 15, 16, 14,\n",
       "          6,  8, 21,  7, 17, 16, 12,  8, 12,  6, 22,  7, 12, 12,  8,  5,  7,  6,\n",
       "         19, 10, 14,  7,  5,  6, 22,  5, 14, 17,  5, 12,  7, 15, 19,  6, 15,  5,\n",
       "         10,  9,  5,  4, 23, 14, 12,  5, 22,  8, 14, 16,  9, 17, 19, 13,  5,  5,\n",
       "          7, 17,  8,  5,  8, 23,  8,  5,  6, 22, 22, 19,  7, 12,  9, 19, 15, 16,\n",
       "         16,  8, 18,  6,  6, 20, 18, 12,  8,  8,  6,  7,  8,  6, 17,  6,  5,  6,\n",
       "         22, 12, 20, 22,  3]]), 'token_type_ids': tensor([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "         0, 0, 0, 0, 0]]), 'attention_mask': tensor([[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "         1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "         1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "         1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "         1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "         1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "         1, 1, 1, 1, 1]])}"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "### Step 3. Tokenize the Sequence\n",
    "tokenized_sequence = tokenizer(masked_heme, return_tensors='pt')\n",
    "tokenized_sequence"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "Axh8vEcpuYCf",
    "outputId": "f34ef206-cc06-4089-a772-1b06bb68b0b2"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "MaskedLMOutput(loss=None, logits=tensor([[[-18.5725, -18.4833, -18.4627,  ..., -18.6075, -18.6886, -18.5834],\n",
       "         [-19.9242, -21.0844, -20.1253,  ..., -18.1157, -19.4804, -19.9197],\n",
       "         [-17.1929, -18.2174, -17.2419,  ..., -18.0640, -17.8393, -17.1908],\n",
       "         ...,\n",
       "         [-19.3707, -19.7466, -19.2460,  ..., -21.4760, -20.1202, -22.1149],\n",
       "         [-19.6403, -20.1926, -18.5551,  ..., -17.4572, -18.9988, -21.0471],\n",
       "         [-18.8277, -19.8305, -18.5255,  ..., -16.8518, -18.2768, -18.0429]]],\n",
       "       grad_fn=<ViewBackward0>), hidden_states=None, attentions=None)"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "### Step 4. Pass the tokenized sequence through ProtBERT\n",
    "model_outs = model(**tokenized_sequence)\n",
    "model_outs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "bZA47cz-9ua9",
    "outputId": "a9e6bf21-4dc0-436f-e35f-9761884223c7"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([147, 30])\n"
     ]
    }
   ],
   "source": [
    "### Step 5. Transform the Logits\n",
    "import torch.nn.functional as F\n",
    "logits = model_outs.logits.squeeze()[1:-1] # Ignore SOS and EOS special tokens\n",
    "print(logits.shape)\n",
    "softmaxed = F.softmax(logits, dim=1).detach().numpy() # Softmax to normalize the logits to sum to 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "ex2k34oO99Wf",
    "outputId": "d159dde0-93ac-4b83-9bcb-80a7e4a2b8eb"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MVHLTPEEKSAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFESFGDLSTPDAVMGNPKVKAHGKKVLGAFSDGLKHLDNLKGTFATLSELHCDKLHVDPENFRLLGNVLVCVLAHHFGKEFTPPVQAAYQKVVAGVANALAHKYH\n",
      "The filled-in masked sequence is: H\n"
     ]
    }
   ],
   "source": [
    "### Step 6. Decode the Logits Using Greedy Decoding (Max Probability at Each Timestep)\n",
    "decoded_outputs = tokenizer.batch_decode(softmaxed.argmax(axis=1))\n",
    "decoded_sequence = ''.join(decoded_outputs)\n",
    "print(decoded_sequence)\n",
    "print(f'The filled-in masked sequence is: {decoded_sequence[92]}')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "EJ_rpJCX3Mqi"
   },
   "source": [
    "**Sanity Check:** Whew, looks like the pLM ProtBERT was able to recapitulate the correct amino acid at that position. But how confident was the model? Let's visualize the distribution at that position and see what other amino acids the  model was choosing between.\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 508
    },
    "id": "iEQucNJf20Sc",
    "outputId": "63cdd200-99b1-49a1-8434-a3e4f449b0a1"
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHrCAYAAAAzPLxnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABfcUlEQVR4nO3deVxN+f8H8Ne9V/tmiSIpKmQ3DGJMIrLVGGMZYwjZydIXxQxhkGUsY9+zb2M3jEGyRJbJOsgaZSmylNJC9/P7w6P7c3Wre+umXK/n49Hj0T3n8znnfW+326vP+ZxzJEIIASIiIiIdIS3sAoiIiIi0ieGGiIiIdArDDREREekUhhsiIiLSKQw3REREpFMYboiIiEinMNwQERGRTmG4ISIiIp3CcENEREQ6heGGqJA1a9YMzZo1+yT7kkgkmDhxouLxxIkTIZFIEB8f/0n2b29vj169en2SfRWm+/fvQyKR4Pfffy/sUgrFsWPHIJFIcOzYMa1sb82aNZBIJLh//36ubT9+j2m7Fvo8MNzQJyGRSNT6KmofQKdPn8bEiRPx6tUrtdr36tVL6fmYmpqiUqVK6NSpE3bs2AG5XF4odX1KRbm23Fy/fh0TJ05U648oABw4cEApLBaG7H6XrK2tldpFRESgffv2sLa2hqmpKWrVqoX58+cjIyMj1300a9YMNWrUULlOm0Fu2rRp2L17d763Q1SssAugL8P69euVHq9btw6HDx/OstzZ2flTlpWr06dPY9KkSejVqxeKFy+uVh8DAwOsXLkSAJCSkoIHDx5g37596NSpE5o1a4Y9e/bA3Nxc0f7QoUOfpK7MeooVK9hf+5xqu3nzJqTSovs/1fXr1zFp0iQ0a9YM9vb2ubY/cOAAFi1aVOgBp2XLlujZs6fSMiMjI8X3ERERaNy4MZycnODv7w9jY2P8/fffGD58OO7evYs//vhDq/V8++23SElJgb6+vkb9pk2bhk6dOqFDhw5Ky3v06IEff/wRBgYGn6wW+rwx3NAn8fPPPys9PnPmDA4fPpxleV4IIZCamqr0YV6YihUrluV5TZkyBdOnT8fYsWPRr18/bN26VbGuoD905XI50tPTYWhoCENDwwLdV27y8seJcle5cuUcf5eWLVsGADhx4gRKliwJABgwYABcXV2xZs0arYcbqVSq1feaTCaDTCYrErXQ56Ho/gtFX5zg4GA0b94cZcqUgYGBAapVq4YlS5ZkaWdvb4/27dvjn3/+Qf369WFkZKT48H7w4AG8vLxgYmKCMmXKYOTIkfjnn39UHvI6e/YsWrduDQsLCxgbG8PV1RWnTp1SrJ84cSJGjx4NAKhYsaJiuF/dQxYfCwgIQKtWrfDnn3/i1q1biuWq5twsWLAA1atXh7GxMUqUKIH69etj06ZNatUlkUgwdOhQbNy4EdWrV4eBgQEOHjyoWKdqlCE+Ph5dunSBubk5SpUqheHDhyM1NVWxPvPQw5o1a7L0/XCbudWmas7NvXv30LlzZ5QsWRLGxsZo1KgR9u/fr9Qmc97Etm3bMHXqVJQvXx6GhoZo0aIF7ty5k+1rnunBgwcYPHgwqlSpAiMjI5QqVQqdO3dW+lmuWbMGnTt3BgC4ubnleqi0V69eWLRokeI1yPz62PLly+Hg4AADAwN8/fXXOH/+fJY2kZGR6NSpE0qWLAlDQ0PUr18fe/fuzfV5qSsxMRGGhoZZRtLKli1bIP8UqJrncvv2bfzwww+wtraGoaEhypcvjx9//BEJCQkA3r+GycnJWLt2reK1zHyvqJpzI4TAlClTUL58eRgbG8PNzQ3Xrl1Tq5bMw2zXr1+Hm5sbjI2NYWNjg5kzZ2bpn5aWhsDAQDg6OsLAwAC2trYYM2YM0tLStPJaUcHgyA0VGUuWLEH16tXh5eWFYsWKYd++fRg8eDDkcjmGDBmi1PbmzZvo1q0bBgwYgH79+qFKlSpITk5G8+bN8eTJEwwfPhzW1tbYtGkTQkNDs+zr6NGjaNOmDerVq4fAwEBIpVJFuDp58iQaNGiAjh074tatW9i8eTPmzp0LS0tLAEDp0qXz/Bx79OiBQ4cO4fDhw6hcubLKNitWrMCwYcPQqVMnRci4cuUKzp49i59++kmtuo4ePYpt27Zh6NChsLS0zPUQS5cuXWBvb4+goCCcOXMG8+fPx8uXL7Fu3TqNnp+mr1lcXBwaN26MN2/eYNiwYShVqhTWrl0LLy8vbN++Hd9//71S++nTp0MqlWLUqFFISEjAzJkz0b17d5w9ezbHus6fP4/Tp0/jxx9/RPny5XH//n0sWbIEzZo1w/Xr12FsbIxvv/0Ww4YNw/z58zFu3DjFIdLsDpUOGDAAjx8/Vnl4NdOmTZvw+vVrDBgwABKJBDNnzkTHjh1x79496OnpAQCuXbuGJk2awMbGBgEBATAxMcG2bdvQoUMH7NixI8troEpqamqWSeFmZmaKkbJmzZph69atGDBgAPz8/BSHpXbu3IlZs2blun0AyMjIUDnx/OXLl7n2TU9Ph4eHB9LS0uDr6wtra2s8evQIf/31F169egULCwusX78effv2RYMGDdC/f38AgIODQ7bbnDBhAqZMmYK2bduibdu2uHDhAlq1aoX09HS1ns/Lly/RunVrdOzYEV26dMH27dvh7++PmjVrok2bNgDej3p6eXkhLCwM/fv3h7OzM65evYq5c+fi1q1bnB9UlAmiQjBkyBDx8dvvzZs3Wdp5eHiISpUqKS2zs7MTAMTBgweVls+ePVsAELt371YsS0lJEVWrVhUARGhoqBBCCLlcLpycnISHh4eQy+VK+69YsaJo2bKlYtmsWbMEABEVFaXW8/L29hYmJibZrr948aIAIEaOHKlY5urqKlxdXRWPv/vuO1G9evUc95NTXQCEVCoV165dU7kuMDBQ8TgwMFAAEF5eXkrtBg8eLACIy5cvCyGEiIqKEgBEcHBwrtvMqTY7Ozvh7e2teDxixAgBQJw8eVKx7PXr16JixYrC3t5eZGRkCCGECA0NFQCEs7OzSEtLU7T9448/BABx9erVLPv6kKr3Vnh4uAAg1q1bp1j2559/Kr1XcqPqfSzE/79epUqVEi9evFAs37NnjwAg9u3bp1jWokULUbNmTZGamqpYJpfLRePGjYWTk1OuNQBQ+fXhz+rdu3di6NChQk9PT7FeJpOJJUuWqPU8XV1ds91P5tesWbMU7TN/XpmvY+b7/s8//8xxPyYmJkrvj0zBwcFK76mnT58KfX190a5dO6Xf4XHjxgkAStv4uJYPn8+HP/u0tDRhbW0tfvjhB8Wy9evXC6lUqvT+FEKIpUuXCgDi1KlTOT4fKjw8LEVFxofD4wkJCYiPj4erqyvu3bunGLrOVLFiRXh4eCgtO3jwIGxsbODl5aVYZmhoiH79+im1u3TpEm7fvo2ffvoJz58/R3x8POLj45GcnIwWLVrgxIkTWjur6WOmpqYAgNevX2fbpnjx4nj48KHKwxfqcnV1RbVq1dRu//HImK+vL4D3E2YL0oEDB9CgQQN88803imWmpqbo378/7t+/j+vXryu17927t9IcpaZNmwJ4f2grJx++t96+fYvnz5/D0dERxYsXx4ULF7TxVFTq2rUrSpQooXj8cb0vXrzA0aNH0aVLF7x+/VrxXnz+/Dk8PDxw+/ZtPHr0KNf9fPfddzh8+LDS14e/HzKZDA4ODvDw8MDatWuxdetWeHp6wtfXV+3RB3t7+yz7OHz4MDZs2JBrXwsLCwDAP//8gzdv3qi1v5wcOXIE6enp8PX1VToUOGLECLW3YWpqqjRPSV9fHw0aNFB6L/35559wdnZG1apVFT+b+Ph4NG/eHABUjgpT0cDDUlRknDp1CoGBgQgPD8/yAZiQkKD4gATeh5uPPXjwAA4ODlnmPTg6Oio9vn37NgDA29s721oSEhKU/ihpS1JSEoD3hwyy4+/vjyNHjqBBgwZwdHREq1at8NNPP6FJkyZq70fV65MTJycnpccODg6QSqV5nl+krgcPHqBhw4ZZlmceCnrw4IHSKcgVKlRQapf5M8rt0EhKSgqCgoIQHByMR48eQQihWPdxcNam3Oq9c+cOhBAYP348xo8fr3IbT58+hY2NTY77KV++PNzd3bNdP336dPzxxx+4ffu2ImB36dIFbm5uGDJkCNq3b5/rWXQmJiYq96HOe6RixYrw8/PDnDlzsHHjRjRt2hReXl74+eeflX6v1fXgwQMAWd+3pUuXVvv3tnz58lk+K0qUKIErV64oHt++fRs3btzI9rDq06dPNSmbPiGGGyoS7t69ixYtWqBq1aqYM2cObG1toa+vjwMHDmDu3LlZRlLyMwkyc1uzZs1CnTp1VLbJ/AOgbf/99x+ArIHrQ87Ozrh58yb++usvHDx4EDt27MDixYsxYcIETJo0Sa395HeS6Mcf+qomygJQ6xop2pTdGTMfhhVVfH19ERwcjBEjRsDFxQUWFhaQSCT48ccfC2yUDsi93sx9jxo1KstIZKac3ivqWrx4MZo3b57lfe3l5QU/Pz/cv39fK/vJyezZs9GrVy/s2bMHhw4dwrBhwxRzvMqXL1+g+1ZFnfeSXC5HzZo1MWfOHJVtbW1tC6Q2yj+GGyoS9u3bh7S0NOzdu1fpv11Nhn3t7Oxw/fp1CCGU/hh/fDZN5iRFc3PzHP/bBbL/o55X69evh0QiQcuWLXNsZ2Jigq5du6Jr165IT09Hx44dMXXqVIwdOxaGhoZar+v27dtKoz137tyBXC5XTETO/G/44wvzZf4H/SFNarOzs8PNmzezLI+MjFSs14bt27fD29sbs2fPVixLTU3N8nw0fV3z+3OoVKkSAEBPTy/X92J+xMXFqQyib9++BQC8e/euwPb9oZo1a6JmzZr49ddfcfr0aTRp0gRLly7FlClTAKj/ema+L27fvq14DQHg2bNnak1wVpeDgwMuX76MFi1aaP13jgoW59xQkZD5X9THhwuCg4PV3oaHhwcePXqkdAptamoqVqxYodSuXr16cHBwwO+//644TPShZ8+eKb43MTEBkPWPel5Mnz4dhw4dQteuXbMMp3/o+fPnSo/19fVRrVo1CCEUf4y0WRcAxSnNmRYsWAAAirNGzM3NYWlpiRMnTii1W7x4cZZtaVJb27Ztce7cOYSHhyuWJScnY/ny5bC3t9do3lBOZDJZltGdBQsWZPmDr+nrmt+fQ5kyZdCsWTMsW7YMT548ybL+w/diflSuXBmHDx9Wem9lZGRg27ZtMDMzy/GsJG1ITEzMEqBq1qwJqVSqdEq1iYmJWq+lu7s79PT0sGDBAqWf67x587RVMoD3h+4ePXqU5TMEeH+oMzk5Wav7I+3hyA0VCa1atYK+vj48PT0xYMAAJCUlYcWKFShTpozKD31VBgwYgIULF6Jbt24YPnw4ypYti40bNyou4JX5n5dUKsXKlSvRpk0bVK9eHb1794aNjQ0ePXqE0NBQmJubY9++fQDeByEA+OWXX/Djjz9CT08Pnp6eij9qqrx7904xyTI1NRUPHjzA3r17ceXKFbi5uWH58uW5vhbW1tZo0qQJrKyscOPGDSxcuBDt2rVTzNXJS105iYqKgpeXF1q3bo3w8HBs2LABP/30E2rXrq1o07dvX0yfPh19+/ZF/fr1ceLECaXr9WTSpLaAgABs3rwZbdq0wbBhw1CyZEmsXbsWUVFR2LFjh9auZty+fXusX78eFhYWqFatGsLDw3HkyBGUKlVKqV2dOnUgk8kwY8YMJCQkwMDAQHHtJVUyn+uwYcPg4eEBmUyGH3/8UaPaFi1ahG+++QY1a9ZEv379UKlSJcTFxSE8PBwPHz7E5cuX8/akPxAQEICff/4ZDRs2RP/+/WFkZITNmzcjIiICU6ZMUZyWXlCOHj2KoUOHonPnzqhcuTLevXuH9evXQyaT4YcfflC0q1evHo4cOYI5c+agXLlyqFixoso5WaVLl8aoUaMQFBSE9u3bo23btrh48SL+/vtvxeUHtKFHjx7Ytm0bBg4ciNDQUDRp0gQZGRmIjIzEtm3bFNfaoiKosE7Toi+bqlNo9+7dK2rVqiUMDQ2Fvb29mDFjhli9enWW04rt7OxEu3btVG733r17ol27dsLIyEiULl1a/O9//xM7duwQAMSZM2eU2l68eFF07NhRlCpVShgYGAg7OzvRpUsXERISotTut99+EzY2NkIqleZ6Wri3t7fS6bHGxsbC3t5e/PDDD2L79u2KU5s/9PGp4MuWLRPffvutoi4HBwcxevRokZCQoFZdAMSQIUNU1odsTgW/fv266NSpkzAzMxMlSpQQQ4cOFSkpKUp937x5I3x8fISFhYUwMzMTXbp0EU+fPs2yzZxq+/hUcCGEuHv3rujUqZMoXry4MDQ0FA0aNBB//fWXUpvM03k/PpU4p1PUP/Ty5UvRu3dvYWlpKUxNTYWHh4eIjIxUWc+KFStEpUqVhEwmy/W08Hfv3glfX19RunRpIZFIFO/pzLo+PD06k6rX6+7du6Jnz57C2tpa6OnpCRsbG9G+fXuxffv2HJ9X5vay+3l/6ODBg8LV1VVYWloKfX19UbNmTbF06dJc+wnx/j2a3eUJVD3Xj0+/vnfvnujTp49wcHAQhoaGomTJksLNzU0cOXJEaVuRkZHi22+/FUZGRkqndH98KrgQQmRkZIhJkyaJsmXLCiMjI9GsWTPx33//ZfmZZncquKrn4+3tLezs7JSWpaenixkzZojq1asLAwMDUaJECVGvXj0xadKkLL+TVHRIhMhlJh7RZ27evHkYOXIkHj58mOtZJ0RE9PljuCGdkpKSonSmUGpqKurWrYuMjAyVh1CIiEj3cM4N6ZSOHTuiQoUKqFOnDhISErBhwwZERkZi48aNhV0aERF9Igw3pFM8PDywcuVKbNy4ERkZGahWrRq2bNmCrl27FnZpRET0ifCwFBEREekUXueGiIiIdArDDREREemUL27OjVwux+PHj2FmZsbLaRMREX0mhBB4/fo1ypUrl+sFPr+4cPP48WPe7IyIiOgzFRMTk+vNVr+4cJN5+fqYmBiYm5sXcjVERESkjsTERNja2ir+jufkiws3mYeizM3NGW6IiIg+M+pMKeGEYiIiItIpDDdERESkUxhuiIiISKcw3BAREZFOYbghIiIincJwQ0RERDqF4YaIiIh0CsMNERER6RSGGyIiItIpDDdERESkUwo13Jw4cQKenp4oV64cJBIJdu/enWufY8eO4auvvoKBgQEcHR2xZs2aAq+TiIiIPh+FGm6Sk5NRu3ZtLFq0SK32UVFRaNeuHdzc3HDp0iWMGDECffv2xT///FPAlRIREdHnolBvnNmmTRu0adNG7fZLly5FxYoVMXv2bACAs7MzwsLCMHfuXHh4eBRUmURERPQZ+azm3ISHh8Pd3V1pmYeHB8LDw7Ptk5aWhsTERKUvIiIi0l2FOnKjqdjYWFhZWSkts7KyQmJiIlJSUmBkZJSlT1BQECZNmvSpSiQiIg3YB+zXqP396e0KqBLSJZ/VyE1ejB07FgkJCYqvmJiYwi6JiIiICtBnNXJjbW2NuLg4pWVxcXEwNzdXOWoDAAYGBjAwMPgU5REREVER8FmN3Li4uCAkJERp2eHDh+Hi4lJIFREREVFRU6jhJikpCZcuXcKlS5cAvD/V+9KlS4iOjgbw/pBSz549Fe0HDhyIe/fuYcyYMYiMjMTixYuxbds2jBw5sjDKJyIioiKoUMPNv//+i7p166Ju3boAAD8/P9StWxcTJkwAADx58kQRdACgYsWK2L9/Pw4fPozatWtj9uzZWLlyJU8DJyIiIgWJEEIUdhGfUmJiIiwsLJCQkABzc/PCLoeI6IvGs6VIXZr8/f6s5twQERER5YbhhoiIiHQKww0RERHpFIYbIiIi0ikMN0RERKRTGG6IiIhIpzDcEBERkU5huCEiIiKdwnBDREREOoXhhoiIiHQKww0RERHpFIYbIiIi0ikMN0RERKRTGG6IiIhIpzDcEBERkU5huCEiIiKdwnBDREREOoXhhoiIiHQKww0RERHpFIYbIiIi0ikMN0RERKRTGG6IiIhIpzDcEBERkU5huCEiIiKdwnBDREREOoXhhoiIiHQKww0RERHpFIYbIiIi0ikMN0RERKRTGG6IiIhIpzDcEBERkU5huCEiIiKdwnBDREREOoXhhoiIiHQKww0RERHpFIYbIiIi0ikMN0RERKRTGG6IiIhIpzDcEBERkU5huCEiIiKdwnBDREREOoXhhoiIiHQKww0RERHpFIYbIiIi0ikMN0RERKRTGG6IiIhIpzDcEBERkU5huCEiIiKdwnBDREREOoXhhoiIiHQKww0RERHpFIYbIiIi0ikMN0RERKRTGG6IiIhIpzDcEBERkU5huCEiIiKdwnBDREREOoXhhoiIiHQKww0RERHpFIYbIiIi0imFHm4WLVoEe3t7GBoaomHDhjh37lyO7efNm4cqVarAyMgItra2GDlyJFJTUz9RtURERFTUFWq42bp1K/z8/BAYGIgLFy6gdu3a8PDwwNOnT1W237RpEwICAhAYGIgbN25g1apV2Lp1K8aNG/eJKyciIqKiqlDDzZw5c9CvXz/07t0b1apVw9KlS2FsbIzVq1erbH/69Gk0adIEP/30E+zt7dGqVSt069Yt19EeIiIi+nIUWrhJT09HREQE3N3d/78YqRTu7u4IDw9X2adx48aIiIhQhJl79+7hwIEDaNu2bbb7SUtLQ2JiotIXERER6a5ihbXj+Ph4ZGRkwMrKSmm5lZUVIiMjVfb56aefEB8fj2+++QZCCLx79w4DBw7M8bBUUFAQJk2apNXaiYiIqOgq9AnFmjh27BimTZuGxYsX48KFC9i5cyf279+P3377Lds+Y8eORUJCguIrJibmE1ZMREREn1qhjdxYWlpCJpMhLi5OaXlcXBysra1V9hk/fjx69OiBvn37AgBq1qyJ5ORk9O/fH7/88guk0qxZzcDAAAYGBtp/AkRERFQkFdrIjb6+PurVq4eQkBDFMrlcjpCQELi4uKjs8+bNmywBRiaTAQCEEAVXLBEREX02Cm3kBgD8/Pzg7e2N+vXro0GDBpg3bx6Sk5PRu3dvAEDPnj1hY2ODoKAgAICnpyfmzJmDunXromHDhrhz5w7Gjx8PT09PRcghIiKiL1uhhpuuXbvi2bNnmDBhAmJjY1GnTh0cPHhQMck4OjpaaaTm119/hUQiwa+//opHjx6hdOnS8PT0xNSpUwvrKRAREVERIxFf2PGcxMREWFhYICEhAebm5oVdDhHRF80+YL9G7e9Pb1dAlVBRp8nf78/qbCkiIiKi3DDcEBERkU5huCEiIiKdwnBDREREOoXhhoiIiHQKww0RERHpFIYbIiIi0ikMN0RERKRTGG6IiIhIpzDcEBERkU5huCEiIiKdwnBDREREOoXhhoiIiHSKxuHG29sbJ06cKIhaiIiIiPJN43CTkJAAd3d3ODk5Ydq0aXj06FFB1EVERESUJxqHm927d+PRo0cYNGgQtm7dCnt7e7Rp0wbbt2/H27dvC6JGIiIiIrXlac5N6dKl4efnh8uXL+Ps2bNwdHREjx49UK5cOYwcORK3b9/Wdp1EREREasnXhOInT57g8OHDOHz4MGQyGdq2bYurV6+iWrVqmDt3rrZqJCIiIlKbxuHm7du32LFjB9q3bw87Ozv8+eefGDFiBB4/foy1a9fiyJEj2LZtGyZPnlwQ9RIRERHlqJimHcqWLQu5XI5u3brh3LlzqFOnTpY2bm5uKF68uBbKIyIiItKMxuFm7ty56Ny5MwwNDbNtU7x4cURFReWrMCIiIqK80PiwVGhoqMqzopKTk9GnTx+tFEVERESUVxqHm7Vr1yIlJSXL8pSUFKxbt04rRRERERHlldqHpRITEyGEgBACr1+/VjoslZGRgQMHDqBMmTIFUiQRERGRutQON8WLF4dEIoFEIkHlypWzrJdIJJg0aZJWiyMiIiLSlNrhJjQ0FEIING/eHDt27EDJkiUV6/T19WFnZ4dy5coVSJFERERE6lI73Li6ugIAoqKiUKFCBUgkkgIrioiIiCiv1Ao3V65cQY0aNSCVSpGQkICrV69m27ZWrVpaK46IiIhIU2qFmzp16iA2NhZlypRBnTp1IJFIIITI0k4ikSAjI0PrRRIRERGpS61wExUVhdKlSyu+JyIiIiqq1Ao3dnZ2Kr8nIiIiKmrUCjd79+5Ve4NeXl55LoaIiIgov9QKNx06dFBrY5xzQ0RERIVNrXAjl8sLug4iIiIirdD43lJERERERZlaIzfz589H//79YWhoiPnz5+fYdtiwYVopjIiIiCgv1Ao3c+fORffu3WFoaIi5c+dm204ikTDcEBERUaFS+zo3qr4nIiIiKmryNedGCKHySsVEREREhSVP4WbVqlWoUaMGDA0NYWhoiBo1amDlypXaro2IiIhIY2rfFTzThAkTMGfOHPj6+sLFxQUAEB4ejpEjRyI6OhqTJ0/WepFERERE6tI43CxZsgQrVqxAt27dFMu8vLxQq1Yt+Pr6MtwQERFRodL4sNTbt29Rv379LMvr1auHd+/eaaUoIiIiorzSONz06NEDS5YsybJ8+fLl6N69u1aKIiIiIsortQ5L+fn5Kb6XSCRYuXIlDh06hEaNGgEAzp49i+joaPTs2bNgqiQiIiJSk1rh5uLFi0qP69WrBwC4e/cuAMDS0hKWlpa4du2alssjIiIi0oxa4SY0NLSg6yAiIiLSCt44k4iIiHSKxqeCA8C///6Lbdu2ITo6Gunp6Urrdu7cqZXCiIiIiPJC45GbLVu2oHHjxrhx4wZ27dqFt2/f4tq1azh69CgsLCwKokYiIiIitWkcbqZNm4a5c+di37590NfXxx9//IHIyEh06dIFFSpUKIgaiYiIiNSmcbi5e/cu2rVrBwDQ19dHcnIyJBIJRo4cieXLl2u9QCIiIiJNaBxuSpQogdevXwMAbGxs8N9//wEAXr16hTdv3mi3OiIiIiINaTyh+Ntvv8Xhw4dRs2ZNdO7cGcOHD8fRo0dx+PBhtGjRoiBqJCIiIlKbxuFm4cKFSE1NBQD88ssv0NPTw+nTp/HDDz/g119/1XqBRERERJrQONyULFlS8b1UKkVAQIBWCyIiIiLKjzxd5yYjIwO7du3CjRs3AADVqlXDd999h2LF8rQ5IiIiIq3ROI1cu3YNXl5eiI2NRZUqVQAAM2bMQOnSpbFv3z7UqFFD60USERERqUvjs6X69u2L6tWr4+HDh7hw4QIuXLiAmJgY1KpVC/379y+IGomIiIjUpnG4uXTpEoKCglCiRAnFshIlSmDq1KlZ7h6ujkWLFsHe3h6GhoZo2LAhzp07l2P7V69eYciQIShbtiwMDAxQuXJlHDhwQOP9EhERkW7SONxUrlwZcXFxWZY/ffoUjo6OGm1r69at8PPzQ2BgIC5cuIDatWvDw8MDT58+Vdk+PT0dLVu2xP3797F9+3bcvHkTK1asgI2NjaZPg4iIiHSUWnNuEhMTFd8HBQVh2LBhmDhxIho1agQAOHPmDCZPnowZM2ZotPM5c+agX79+6N27NwBg6dKl2L9/P1avXq3yLKzVq1fjxYsXOH36NPT09AAA9vb2Gu2TiIiIdJta4aZ48eKQSCSKx0IIdOnSRbFMCAEA8PT0REZGhlo7Tk9PR0REBMaOHatYJpVK4e7ujvDwcJV99u7dCxcXFwwZMgR79uxB6dKl8dNPP8Hf3x8ymUxln7S0NKSlpSkefxjUiIiISPeoFW5CQ0O1vuP4+HhkZGTAyspKabmVlRUiIyNV9rl37x6OHj2K7t2748CBA7hz5w4GDx6Mt2/fIjAwUGWfoKAgTJo0Sev1ExERUdGkVrhxdXUt6DrUIpfLUaZMGSxfvhwymQz16tXDo0ePMGvWrGzDzdixY+Hn56d4nJiYCFtb209VMhEREX1iebrq3qtXr7Bq1SrFRfyqV6+OPn36wMLCQu1tWFpaQiaTZZmcHBcXB2tra5V9ypYtCz09PaVDUM7OzoiNjUV6ejr09fWz9DEwMICBgYHadREREdHnTeOzpf799184ODhg7ty5ePHiBV68eIE5c+bAwcEBFy5cUHs7+vr6qFevHkJCQhTL5HI5QkJC4OLiorJPkyZNcOfOHcjlcsWyW7duoWzZsiqDDREREX15NA43I0eOhJeXF+7fv4+dO3di586diIqKQvv27TFixAiNtuXn54cVK1Zg7dq1uHHjBgYNGoTk5GTF2VM9e/ZUmnA8aNAgvHjxAsOHD8etW7ewf/9+TJs2DUOGDNH0aRAREZGO0viw1L///osVK1Yo3UeqWLFiGDNmDOrXr6/Rtrp27Ypnz55hwoQJiI2NRZ06dXDw4EHFJOPo6GhIpf+fv2xtbfHPP/9g5MiRqFWrFmxsbDB8+HD4+/tr+jSIiIhIR2kcbszNzREdHY2qVasqLY+JiYGZmZnGBQwdOhRDhw5Vue7YsWNZlrm4uODMmTMa74eIiIi+DBofluratSt8fHywdetWxMTEICYmBlu2bEHfvn3RrVu3gqiRiIiISG0aj9z8/vvvkEgk6NmzJ969ewcA0NPTw6BBgzB9+nStF0hERESkCY3CTUZGBs6cOYOJEyciKCgId+/eBQA4ODjA2Ni4QAokIiIi0oRG4UYmk6FVq1a4ceMGKlasiJo1axZUXURERER5ovGcmxo1auDevXsFUQsRERFRvmkcbqZMmYJRo0bhr7/+wpMnT5CYmKj0RURERFSYNJ5Q3LZtWwCAl5dXljuFSyQSte8KTkRERFQQNA43BXGHcCIiIiJt0SjcCCFQrlw5pKeno0qVKkpXKSYiIiIqCtSecxMVFYVatWqhatWqqFWrFhwcHPDvv/8WZG1EREREGlM73IwePRrv3r3Dhg0bsH37dpQvXx4DBgwoyNqIiIiINKb2caWwsDBs374d33zzDQCgUaNGKF++PJKTk2FiYlJgBRIRERFpQu2Rm6dPn8LJyUnxuGzZsjAyMsLTp08LpDAiIiKivFB75EYikSApKQlGRkaKZVKpFK9fv1a6vo25ubl2KyQiIiLSgNrhRgiBypUrZ1lWt25dxfe8zg0REREVNrXDDa9vQ0RERJ8DtcONq6trQdZBREREpBUa31uKiIiIqChjuCEiIiKdwnBDREREOoXhhoiIiHQKww0RERHpFLXOlurYsaPaG9y5c2eeiyEiIiLKL7VGbiwsLBRf5ubmCAkJUbojeEREBEJCQmBhYVFghRIRERGpQ62Rm+DgYMX3/v7+6NKlC5YuXQqZTAYAyMjIwODBg3nrBSIiIip0Gs+5Wb16NUaNGqUINgAgk8ng5+eH1atXa7U4IiIiIk1pHG7evXuHyMjILMsjIyMhl8u1UhQRERFRXql9+4VMvXv3ho+PD+7evYsGDRoAAM6ePYvp06ejd+/eWi+QiIiISBMah5vff/8d1tbWmD17Np48eQIAKFu2LEaPHo3//e9/Wi+QiIiISBMahxupVIoxY8ZgzJgxSExMBABOJCYiIqIiI08X8Xv37h2OHDmCzZs3QyKRAAAeP36MpKQkrRZHREREpCmNR24ePHiA1q1bIzo6GmlpaWjZsiXMzMwwY8YMpKWlYenSpQVRJxEREZFaNB65GT58OOrXr4+XL1/CyMhIsfz7779HSEiIVosjIiIi0pTGIzcnT57E6dOnoa+vr7Tc3t4ejx490lphRERERHmh8ciNXC5HRkZGluUPHz6EmZmZVooiIiIiyiuNw02rVq0wb948xWOJRIKkpCQEBgaibdu22qyNiIiISGMaH5aaPXs2PDw8UK1aNaSmpuKnn37C7du3YWlpic2bNxdEjURERERq0zjclC9fHpcvX8bWrVtx+fJlJCUlwcfHB927d1eaYExERERUGDQONwBQrFgxdO/eHd27d9d2PURERET5ovGcG5lMBjc3N7x48UJpeVxcnNKdwomIiIgKg8bhRgiBtLQ01K9fH9euXcuyjoiIiKgwaRxuJBIJduzYAU9PT7i4uGDPnj1K64iIiIgKU55GbmQyGf744w/8/vvv6Nq1K6ZMmcJRGyIiIioS8jShOFP//v3h5OSEzp0748SJE9qqiYiIiCjPNB65sbOzU5o47ObmhjNnziAmJkarhRERERHlhcYjN1FRUVmWOTo64uLFi4iLi9NKUURERER5pfHITXYMDQ1hZ2enrc0RERER5YlaIzclS5bErVu3YGlpiRIlSuR4VtTH178hIiIi+pTUCjdz585V3PH7w5tmEhERERU1aoUbb29vld8TERERFTVqhZvExES1N2hubp7nYoiIiIjyS61wU7x48VyvPiyEgEQiQUZGhlYKIyIiIsoLtcJNaGhoQddBREREpBVqhRtXV9eCroOIiIhIK/J8+4U3b94gOjoa6enpSstr1aqV76KIiIiI8krjcPPs2TP07t0bf//9t8r1nHNDREREhUnjKxSPGDECr169wtmzZ2FkZISDBw9i7dq1cHJywt69ewuiRiIiIiK1aTxyc/ToUezZswf169eHVCqFnZ0dWrZsCXNzcwQFBaFdu3YFUScRERGRWjQeuUlOTkaZMmUAACVKlMCzZ88AADVr1sSFCxe0Wx0RERGRhjQON1WqVMHNmzcBALVr18ayZcvw6NEjLF26FGXLltV6gURERESa0DjcDB8+HE+ePAEABAYG4u+//0aFChUwf/58TJs2LU9FLFq0CPb29jA0NETDhg1x7tw5tfpt2bIFEokEHTp0yNN+iYiISPdoPOfm559/Vnxfr149PHjwAJGRkahQoQIsLS01LmDr1q3w8/PD0qVL0bBhQ8ybNw8eHh64efOm4vCXKvfv38eoUaPQtGlTjfdJREREukvjkZuPGRsb46uvvspTsAGAOXPmoF+/fujduzeqVauGpUuXwtjYGKtXr862T0ZGBrp3745JkyahUqVKeS2diIiIdJDGIzdCCGzfvh2hoaF4+vQp5HK50vqdO3eqva309HRERERg7NiximVSqRTu7u4IDw/Ptt/kyZNRpkwZ+Pj44OTJkznuIy0tDWlpaYrHmtwElIiIiD4/ebrOTY8ePRAVFQVTU1NYWFgofWkiPj4eGRkZsLKyUlpuZWWF2NhYlX3CwsKwatUqrFixQq19BAUFKdVna2urUY1ERET0edF45Gb9+vXYuXMn2rZtWxD15Oj169fo0aMHVqxYofZhsLFjx8LPz0/xODExkQGHiIhIh2kcbiwsLLQ2z8XS0hIymQxxcXFKy+Pi4mBtbZ2l/d27d3H//n14enoqlmUeFitWrBhu3rwJBwcHpT4GBgYwMDDQSr1ERERU9Gl8WGrixImYNGkSUlJS8r1zfX191KtXDyEhIYplcrkcISEhcHFxydK+atWquHr1Ki5duqT48vLygpubGy5dusQRGSIiItJ85KZLly7YvHkzypQpA3t7e+jp6Smt1/QqxX5+fvD29kb9+vXRoEEDzJs3D8nJyejduzcAoGfPnrCxsUFQUBAMDQ1Ro0YNpf7FixcHgCzLiYiI6Mukcbjx9vZGREQEfv75Z1hZWUEikeSrgK5du+LZs2eYMGECYmNjUadOHRw8eFAxyTg6OhpSab7PWCciIqIvhEQIITTpYGJign/++QfffPNNQdVUoBITE2FhYYGEhASYm5sXdjlERF80+4D9GrW/P503Z/5SafL3W+MhEVtbW4YCIiIiKrI0DjezZ8/GmDFjcP/+/QIoh4iIiCh/8nRvqTdv3sDBwQHGxsZZJhS/ePFCa8URERERaUrjcDNv3rwCKIOIiIhIOzQKN2/fvsXx48cxfvx4VKxYsaBqIiIiIsozjebc6OnpYceOHQVVCxEREVG+aTyhuEOHDti9e3cBlEJERESUfxrPuXFycsLkyZNx6tQp1KtXDyYmJkrrhw0bprXiiIiIiDSlcbhZtWoVihcvjoiICERERCitk0gkDDdERERUqDQON1FRUQVRBxEREZFW5OumTUIIaHj3BiIiIqICladws27dOtSsWRNGRkYwMjJCrVq1sH79em3XRkRERKQxjQ9LzZkzB+PHj8fQoUPRpEkTAEBYWBgGDhyI+Ph4jBw5UutFEhEREalL43CzYMECLFmyBD179lQs8/LyQvXq1TFx4kSGGyIiIipUGh+WevLkCRo3bpxleePGjfHkyROtFEVERESUVxqHG0dHR2zbti3L8q1bt8LJyUkrRRERERHllcaHpSZNmoSuXbvixIkTijk3p06dQkhIiMrQQ0RERPQpaTxy88MPP+Ds2bOwtLTE7t27sXv3blhaWuLcuXP4/vvvC6JGIiIiIrVpPHIDAPXq1cOGDRu0XQsRERFRvuXrIn5ERERERY3aIzdSqRQSiSTHNhKJBO/evct3UURERER5pXa42bVrV7brwsPDMX/+fMjlcq0URURERJRXaoeb7777LsuymzdvIiAgAPv27UP37t0xefJkrRZHREREpKk8zbl5/Pgx+vXrh5o1a+Ldu3e4dOkS1q5dCzs7O23XR0RERKQRjcJNQkIC/P394ejoiGvXriEkJAT79u1DjRo1Cqo+IiIiIo2ofVhq5syZmDFjBqytrbF582aVh6mIiIiICptECCHUaSiVSmFkZAR3d3fIZLJs2+3cuVNrxRWExMREWFhYICEhAebm5oVdDhHRF80+YL9G7e9Pb1dAlVBRp8nfb7VHbnr27JnrqeBEREREhU3tcLNmzZoCLIOIiIhIO3iFYiIiItIpDDdERESkUxhuiIiISKcw3BAREZFOYbghIiIi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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "### Step 7. Visualize the Token Distribution at the F8 Histidine\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "plt.bar(tokenizer.get_vocab().keys(), softmaxed[92])\n",
    "plt.ylabel('Normalized Probability')\n",
    "plt.xlabel('Model Vocabulary')\n",
    "plt.title('Target Distribution at the F8 Histidine')\n",
    "plt.xticks(rotation='vertical')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 1000
    },
    "id": "QLxUZXaxzI7j",
    "outputId": "ac6491e1-9b0c-4757-cc3e-f0250ed7f488"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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+SMKAAAAgADily1ey5YtU2lpqYYNG+aP6QEAAADUUX5ZQendu7cM4+IWzi72OQQWs5sgmt0A0V9zAgAA4Ofx62uGAQAAADuiUaN9+fU1wwAAAADwU1CgAAAAALANChQAAAAAtkGBAgAAAMA2OCQPAACAesfgkLxtmb6CkpiYKIfDcd6Vm5tb9cy6det00003KTw8XJGRkerevbtOnTpldhQAAAAAAcb0FZRNmzapsrKy6ucdO3bolltu0d133y3p++Lk1ltvVUFBgWbMmKGQkBB9+umnCgpit1ldYnaPkWA//P1R6fWaPifMcXL3X0yf87LW2abPWV8FOcz9v45e+mEBAP6D6QVKdHS0z89TpkxRq1at1KNHD0lSXl6eRo8erXHjxlU906ZNG7NjAAAAAAhAfl22OHPmjObMmaNhw4bJ4XDo8OHD2rBhg2JiYpSRkaHY2Fj16NFDa9as8WcMAAAAAAHCr4fkS0pKdPToUd1///2SpL1790qSJkyYoOeee06dOnXSG2+8oZtvvlk7duxQ69atq53H4/HI4/H4jBmGIYfJ2wwAAABQP7DR2778uoLy6quvKisrS/Hx8ZIk7//b8z9ixAgNHTpUnTt31gsvvKA2bdrotddeq3Eet9stl8vlcxneY/6MDgAAAMACfitQ9u/fr2XLlunBBx+sGmvevLkkKTU11efZtm3bqrS0tMa5CgoKVF5e7nM5giL8ExwAAACAZfy2xWv27NmKiYlR3759q8YSExMVHx+vnTt3+jy7a9cuZWVl1TiX0+mU0+n0GWN7FwAAAFD3+KVA8Xq9mj17tnJychQS8sNXOBwOjR07Vk8//bQ6duyoTp06qaioSF988YUWLFjgjygAAAAAAohfCpRly5aptLRUw4YNO+/emDFjdPr0aeXl5enIkSPq2LGjli5dqlatWvkjCuoIepbUL/QssTf6ltjXqYOfmD6n2X2tALswxG4cu3IYRmD+myYk9HKrIwAAYCsUKLCbc2cOWB2hRh/H3W11BEt0L3vH6ggXRPt2AAAAALZBgQIAAADANihQAAAAANiGXzvJAwAAAHbkDchT2PUDKygAAAAAbIMCBQAAAIBtmF6gJCYmyuFwnHfl5uZKksrKyjR48GDFxcUpPDxcV199td59912zYwAAAAAIQKafQdm0aZMqKyurft6xY4duueUW3X339++a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AQAAAMDlcOsieQAAAMAbuW0bW9QaMygAAAAAvAYFCgAAAACvQYECAAAAwGtQoAAAAADwGm4pUE6ePKlJkyapVatWCggIUJ8+fbRjxw6Ha7788ksNHjxYISEhCgwM1I033qhDhw65Ix0AAADAQaVRPw9f4JZdvO677z7t2bNHK1askNVq1cqVKxUfH68vvvhCLVu21Ndff62+fftq7Nix+tOf/qTg4GB9/vnnaty4sTvSgQe4utEeDfHqF/68AQCovwzTNF26y9rp06cVFBSkt99+W4MGDbKf79GjhxISEvTUU09pxIgRatiwoVasWHHZ7+PfqKUr0oWbUKAAAICKswWeTqFas1v9n6dT8IgpB1d6OoVLcvkjXhUVFTp37twFsyEBAQHatm2bKisr9e677+raa6/VgAED1KJFC8XGxiozM9PVqQAAAADwMS4vUIKCgtS7d289+eSTKiws1Llz57Ry5Url5OTo+++/15EjR1RaWqq//OUvGjhwoN5//3395je/0ZAhQ7Rly5YqY9psNpWUlDgcLp74AQAAAOAF3LJIfsWKFTJNUy1btpTFYtH8+fM1cuRI+fn5qbKyUpJ055136uGHH1a3bt302GOP6Y477tDixYurjJeenq6QkBCHw6w86Y7UAQAAUA9U1tPDF7ilQGnXrp22bNmi0tJSffvtt/r4449VXl6utm3bqnnz5vL391eXLl0c7uncuXO1u3ilpaWpuLjY4TD8gtyROgAAAAAPcssuXucFBgYqMDBQx48f1/r16zV79mw1atRIN954o/bt2+dw7VdffaVWrVpVGcdischisTicMwwf2ScNAAAAQI25pUBZv369TNNUx44dlZeXp8mTJ6tTp04aM2aMJGny5Mm6++67dfPNNysuLk7r1q3TO++8o82bN7sjHQAAAAA+wi0FSnFxsdLS0vTdd98pLCxMQ4cO1axZs9SwYUNJ0m9+8xstXrxY6enpevDBB9WxY0etWrVKffv2dUc68AC2BQaAK8/VW7xL/H2OuovtlryXy/ugXCn0QQEAwBEFCryNN/dBSa+nfVDS6mMfFAAAAAC4XBQoAAAAALwGBQoAAAAAr+HWbYYBAAAAb1TJMnmvxQwKAAAAAK/hlgLl5MmTmjRpklq1aqWAgAD16dNHO3bssI+XlpZq4sSJuvrqqxUQEKAuXbpo8eLF7kgFAAAAgA9xyyNe9913n/bs2aMVK1bIarVq5cqVio+P1xdffKGWLVsqNTVVGzdu1MqVK9W6dWu9//77+v3vfy+r1arBgwe7IyXginD1Fp9s7wnAGfydAaAucPkMyunTp7Vq1SrNnj1bN998s9q3b6+ZM2eqffv2WrRokSTpww8/VHJysvr166fWrVtr/PjxiomJ0ccff+zqdAAAAAD4EJcXKBUVFTp37pwaN27scD4gIEDbtm2TJPXp00dr1qxRQUGBTNPUpk2b9NVXX6l///6uTgcAAAC4QGU9PXyBywuUoKAg9e7dW08++aQKCwt17tw5rVy5Ujk5Ofr+++8lSQsWLFCXLl109dVXq1GjRho4cKAWLlyom2++2dXpAAAAAPAhblmDsmLFCqWkpKhly5Zq0KCBbrjhBo0cOVK7du2S9GOB8tFHH2nNmjVq1aqVsrOz9Yc//EFWq1Xx8fEXxLPZbLLZbA7nTNOUYRjuSB8AAACAh7ilQGnXrp22bNmisrIylZSUKCoqSnfffbfatm2r06dP649//KNWr16tQYMGSZJ+8YtfKDc3V88880yVBUp6err+9Kc/OZwz/JrKaBDsjvQBAAAAeIhb+6AEBgYqKipKx48f1/r163XnnXeqvLxc5eXl8vNzfOsGDRqosrLqJ+PS0tJUXFzscBh+Qe5MHQAAAIAHuGUGZf369TJNUx07dlReXp4mT56sTp06acyYMWrYsKF+/etfa/LkyQoICFCrVq20ZcsWvfzyy3r22WerjGexWGSxWBzO8XgXAAAALhd95L2XWwqU4uJipaWl6bvvvlNYWJiGDh2qWbNmqWHDhpKk1157TWlpabrnnnt07NgxtWrVSrNmzdKECRPckQ4AAAAAH2GYpumTBaR/o5aeTgFAPUdjTgC4uIqzBZ5OoVr/r9U9nk7BI6Yf/IenU7gkt65BAQAAAABnUKAAAAAA8BpuWYMCAAAAeDNf6apeHzGDAgAAAMBrUKAAAAAA8BoUKAAAAAC8htMFSnZ2thITE2W1WmUYhjIzMx3GTdPU9OnTFRUVpYCAAMXHx2v//v0O1xw7dkz33HOPgoOD1axZM40dO1alpaW1+iAAAABATVUa9fPwBU4vki8rK1NMTIxSUlI0ZMiQC8Znz56t+fPna/ny5WrTpo2mTZumAQMG6IsvvlDjxo0lSffcc4++//57ZWVlqby8XGPGjNH48eP1yiuv1P4TAcAV4gt9S1zdq0Xyjc8NAPBdtWrUaBiGVq9eraSkJEk/zp5YrVY98sgjevTRRyX92FU+IiJCGRkZGjFihL788kt16dJFO3bsUM+ePSVJ69at0+23367vvvtOVqu1Ru9No0YAuDQKFACe5M2NGqe3rp+NGv/fgXrWqDE/P19FRUWKj4+3nwsJCVFsbKxycnIkSTk5OWrWrJm9OJGk+Ph4+fn5afv27a5MBwAAAICPcWkflKKiIklSRESEw/mIiAj7WFFRkVq0aOGYhL+/wsLC7Nf8nM1mk81mczhnmqYMw0cepAMAAABQIz6xi1d6erpCQkIcDrPypKfTAgAAgI+qlFkvD1/g0gIlMjJSknT48GGH84cPH7aPRUZG6siRIw7jFRUVOnbsmP2an0tLS1NxcbHDYfgFuTJ1AAAAAF7ApQVKmzZtFBkZqQ8++MB+rqSkRNu3b1fv3r0lSb1799aJEye0a9cu+zUbN25UZWWlYmNjq4xrsVgUHBzscPB4FwAAAFD3OL0GpbS0VHl5efbX+fn5ys3NVVhYmKKjozVp0iQ99dRT6tChg32bYavVat/pq3Pnzho4cKDGjRunxYsXq7y8XBMnTtSIESNqvIMXAAAAgLrJ6QJl586diouLs79OTU2VJCUnJysjI0NTpkxRWVmZxo8frxMnTqhv375at26dvQeKJP3jH//QxIkTdeutt8rPz09Dhw7V/PnzXfBxAAAAAPiyWvVB8ST6oKA+oIcFAMCXeXMflMdb/9bTKXjErAPe3xjdJ3bxAgAAAFA/UKAAAAAA8BoUKAAAAAC8BgUKAAAAAK/h9C5eAAAAgK+r9HQCqBYzKAAAAAC8htMFSnZ2thITE2W1WmUYhjIzMx3GTdPU9OnTFRUVpYCAAMXHx2v//v328QMHDmjs2LFq06aNAgIC1K5dO82YMUNnz56t9YcBAAAA4NucfsSrrKxMMTExSklJ0ZAhQy4Ynz17tubPn6/ly5fbO8kPGDBAX3zxhRo3bqy9e/eqsrJSL7zwgtq3b689e/Zo3LhxKisr0zPPPOOSDwXUFfQsgTdydX8evs4BAD9Vq0aNhmFo9erVSkpKkvTj7InVatUjjzyiRx99VJJUXFysiIgIZWRkaMSIEVXGmTNnjhYtWqRvvvmmxu9No0YA8AwKFAA15c2NGtPqaaPG9PrWqDE/P19FRUWKj4+3nwsJCVFsbKxycnKqva+4uFhhYWGuTAUAAACoVqXMenn4Apfu4lVUVCRJioiIcDgfERFhH/u5vLw8LViw4KKPd9lsNtlsNodzpmnKMIxaZgwAAADAm3h0F6+CggINHDhQw4YN07hx46q9Lj09XSEhIQ6HWXnyCmYKAAAA4EpwaYESGRkpSTp8+LDD+cOHD9vHzissLFRcXJz69OmjJUuWXDRuWlqaiouLHQ7DL8iVqQMAAADwAi4tUNq0aaPIyEh98MEH9nMlJSXavn27evfubT9XUFCgfv36qUePHlq2bJn8/C6ehsViUXBwsMPB410AAAC4XGY9PXyB02tQSktLlZeXZ3+dn5+v3NxchYWFKTo6WpMmTdJTTz2lDh062LcZtlqt9p2+zhcnrVq10jPPPKMffvjBHuvnsywAAAAA6henC5SdO3cqLi7O/jo1NVWSlJycrIyMDE2ZMkVlZWUaP368Tpw4ob59+2rdunVq3LixJCkrK0t5eXnKy8vT1Vdf7RC7FjseAwCuEF/YFtjVWyFLvvG5AaAuqFUfFE+iDwoAoDoUKIB38OY+KFNaj/R0Ch4x+8Crnk7hkjy6ixcAAAAA/JRL+6AAAAAAvqDS0wmgWsygAAAAAPAaFCgAAAAAvAYFCgAAAACvQYECAAAAwGs4XaBkZ2crMTFRVqtVhmEoMzPTYdw0TU2fPl1RUVEKCAhQfHy89u/fX2Usm82mbt26yTAM5ebmXk7+AAAAgNMqZdbLwxc4vYtXWVmZYmJilJKSoiFDhlwwPnv2bM2fP1/Lly+3d5IfMGCAvvjiC3uzxvOmTJkiq9WqTz755PI/AYA6p0lDi8tjHv3sNZfHbNLpNy6PCdegZwkA+C6nC5SEhAQlJCRUOWaapubNm6cnnnhCd955pyTp5ZdfVkREhDIzMzVixAj7te+9957ef/99rVq1Su+9995lpg8AAACgLnHpGpT8/HwVFRUpPj7efi4kJESxsbHKycmxnzt8+LDGjRunFStWqEmTJq5MAQAAAIAPc2mjxqKiIklSRESEw/mIiAj7mGmauvfeezVhwgT17NlTBw4cuGRcm80mm83mcM40TRmG4ZrEAQAAAHiFK76L14IFC3Ty5EmlpaXV+J709HSFhIQ4HGblSTdmCQAAgLrMrKeHL3BpgRIZGSnpx0e4furw4cP2sY0bNyonJ0cWi0X+/v5q3769JKlnz55KTk6uMm5aWpqKi4sdDsMvyJWpAwAAAPACLn3Eq02bNoqMjNQHH3ygbt26SZJKSkq0fft2/e53v5MkzZ8/X0899ZT9nsLCQg0YMECvv/66YmNjq4xrsVhksTju6sPjXQAAAEDd43SBUlpaqry8PPvr/Px85ebmKiwsTNHR0Zo0aZKeeuopdejQwb7NsNVqVVJSkiQpOjraIV7Tpk0lSe3atdPVV19di48CAAAAwNc5XaDs3LlTcXFx9tepqamSpOTkZGVkZGjKlCkqKyvT+PHjdeLECfXt21fr1q27oAcK6rbThVtdGo+eBvXLqXLbpS9yEj1LAADwDYZpmr6yXsaBf6OWnk4BF0GBAgAAKs4WeDqFaj3UesSlL6qDnjvg+sbFrnbFd/ECAAAAgOpQoAAAAADwGhQoAAAAALwGBQoAAAAAr+HSPigAAACALzB9pq96/eP0DEp2drYSExNltVplGIYyMzMdxk3T1PTp0xUVFaWAgADFx8dr//79F8R59913FRsbq4CAAIWGhtr7pAAAAACov5wuUMrKyhQTE6OFCxdWOT579mzNnz9fixcv1vbt2xUYGKgBAwbozJkz9mtWrVqlUaNGacyYMfrkk0/073//W7/97W8v/1MAAAAAqBOcfsQrISFBCQkJVY6Zpql58+bpiSee0J133ilJevnllxUREaHMzEyNGDFCFRUVeuihhzRnzhyNHTvWfm+XLl0u8yMAAAAAqCtcukg+Pz9fRUVFio+Pt58LCQlRbGyscnJyJEm7d+9WQUGB/Pz81L17d0VFRSkhIUF79uxxZSoAAABAtSrr6eELXFqgFBUVSZIiIiIczkdERNjHvvnmG0nSzJkz9cQTT2jt2rUKDQ1Vv379dOzYMVemAwAAAMDHXPFthisrf6zdHn/8cQ0dOlQ9evTQsmXLZBiG3njjjSrvsdlsKikpcThMk50XAAAAgLrGpQVKZGSkJOnw4cMO5w8fPmwfi4qKkuS45sRisaht27Y6dOhQlXHT09MVEhLicJiVJ12ZOgAAAAAv4NICpU2bNoqMjNQHH3xgP1dSUqLt27erd+/ekqQePXrIYrFo37599mvKy8t14MABtWrVqsq4aWlpKi4udjgMvyBXpg4AAADACzi9i1dpaany8vLsr/Pz85Wbm6uwsDBFR0dr0qRJeuqpp9ShQwe1adNG06ZNk9Vqtfc5CQ4O1oQJEzRjxgxdc801atWqlebMmSNJGjZsWJXvabFYZLFYHM4ZhuFs6gAAAIAkqZJGjV7L6QJl586diouLs79OTU2VJCUnJysjI0NTpkxRWVmZxo8frxMnTqhv375at26dGjdubL9nzpw58vf316hRo3T69GnFxsZq48aNCg0NdcFHAgAAAOCrDNNHV5v7N2rp6RTg404XbnV5zADrTS6PCQCAr6o4W+DpFKr1+9bDPZ2CR/ztwD89ncIlXfFdvAAAAACgOhQoAAAAALyG02tQAAAAAF/nk2sc6glmUAAAAAB4DQoUAAAAAF6DAgUAAACA13C6QMnOzlZiYqKsVqsMw1BmZqbDuGmamj59uqKiohQQEKD4+Hjt37/f4ZqvvvpKd955p5o3b67g4GD17dtXmzZtqtUHAQAAAOD7nF4kX1ZWppiYGKWkpGjIkCEXjM+ePVvz58/X8uXL7Z3kBwwYoC+++MLerPGOO+5Qhw4dtHHjRgUEBGjevHm644479PXXXysyMrL2nwqoAXqWAJfH1T2E+F4E4Al0kvdetWrUaBiGVq9eraSkJEk/zp5YrVY98sgjevTRRyVJxcXFioiIUEZGhkaMGKGjR4/qqquuUnZ2tm666cd/lE6ePKng4GBlZWUpPj6+Ru9No0YA8AwKFAA15c2NGu9vPczTKXjECwfe8HQKl+TSNSj5+fkqKipyKDJCQkIUGxurnJwcSVJ4eLg6duyol19+WWVlZaqoqNALL7ygFi1aqEePHq5MBwAAAICPcWkflKKiIklSRESEw/mIiAj7mGEY2rBhg5KSkhQUFCQ/Pz+1aNFC69atU2hoaJVxbTabbDabwznTNGUYhivTBwAAAOBhV3wXL9M09Yc//EEtWrTQ1q1b9fHHHyspKUmJiYn6/vvvq7wnPT1dISEhDodZefIKZw4AAADA3VxaoJxf4H748GGH84cPH7aPbdy4UWvXrtVrr72mX/3qV7rhhhv0t7/9TQEBAVq+fHmVcdPS0lRcXOxwGH5BrkwdAAAA9UhlPT18gUsLlDZt2igyMlIffPCB/VxJSYm2b9+u3r17S5JOnTr14xv7Ob61n5+fKiur/s9msVgUHBzscPB4FwAAAFD3OL0GpbS0VHl5efbX+fn5ys3NVVhYmKKjozVp0iQ99dRT6tChg32bYavVat/pq3fv3goNDVVycrKmT5+ugIAAvfjii8rPz9egQYNc9sEAAAAA+B6nC5SdO3cqLi7O/jo1NVWSlJycrIyMDE2ZMkVlZWUaP368Tpw4ob59+2rdunX2HijNmzfXunXr9Pjjj+uWW25ReXm5unbtqrffflsxMTEu+lgAAAAAfFGt+qB4En1Q4I1O7X/HpfGadEh0aTwA3qOxfyOXxzxTcdblMYHa8OY+KPe1vsvTKXjE3w+86ekULumK7+IFAAAAANWhQAEAAADgNShQAAAAAHgNChQAAAAAXsPpXbwAAAAAX+crTQvrI2ZQAAAAAHgNpwuU7OxsJSYmymq1yjAMZWZmOoy/9dZb6t+/v8LDw2UYhnJzcy+IcebMGf3hD39QeHi4mjZtqqFDh+rw4cOX+xkAAAAA1BFOP+JVVlammJgYpaSkaMiQIVWO9+3bV8OHD9e4ceOqjPHwww/r3Xff1RtvvKGQkBBNnDhRQ4YM0b///W/nPwG80unCrS6NF2C9yaXx3IW+JQBqip4lAFA1pwuUhIQEJSQkVDs+atQoSdKBAweqHC8uLtbSpUv1yiuv6JZbbpEkLVu2TJ07d9ZHH32kX/7yl86mBAAAAKCOuOJrUHbt2qXy8nLFx8fbz3Xq1EnR0dHKycm50ukAAACgHjLr6f98wRXfxauoqEiNGjVSs2bNHM5HRESoqKioyntsNptsNpvDOdM0ZRiGu9IEAAAA4AE+sYtXenq6QkJCHA6z8qSn0wIAAADgYle8QImMjNTZs2d14sQJh/OHDx9WZGRklfekpaWpuLjY4TD8gq5AtgAAAACupCteoPTo0UMNGzbUBx98YD+3b98+HTp0SL17967yHovFouDgYIeDx7sAAACAusfpNSilpaXKy8uzv87Pz1dubq7CwsIUHR2tY8eO6dChQyosLJT0Y/Eh/ThzEhkZqZCQEI0dO1apqakKCwtTcHCwHnjgAfXu3ZsdvAAAAHBF0EneexmmaTq1nH/z5s2Ki4u74HxycrIyMjKUkZGhMWPGXDA+Y8YMzZw5U9KPjRofeeQRvfrqq7LZbBowYID+9re/VfuIV1X8G7V0Jm3giqiv/V8AAKhKxdkCT6dQreTWQz2dgkcsP7DK0ylcktMFiregQIE3okABAOB/KFC8jy8UKD6xixcAAACA+oECBQAAAIDXuOKNGgEAAABPq/TNVQ71AjMoAAAAALwGBQoAAAAAr0GBAgAAAMBrOF2gZGdnKzExUVarVYZhKDMz02H8rbfeUv/+/RUeHi7DMJSbm+swfuzYMT3wwAPq2LGjAgICFB0drQcffFDFxcW1+RwAAABAjZn19PAFTi+SLysrU0xMjFJSUjRkyJAqx/v27avhw4dr3LhxF4wXFhaqsLBQzzzzjLp06aKDBw9qwoQJKiws1Jtvvnl5nwLwEvQtAVDXnP5us0vjBVzdz6XxANQ9ThcoCQkJSkhIqHZ81KhRkqQDBw5UOX7ddddp1ar/NYhp166dZs2apf/7v/9TRUWF/P3ZWAwAAACor7xiDUpxcbGCg4MpTgAAAIB6zuMVwdGjR/Xkk09q/Pjx1V5js9lks9kczpmmKcMw3J0eAAAAgCvIozMoJSUlGjRokLp06aKZM2dWe116erpCQkIcDrPy5JVLFAAAAHVKpcx6efgCjxUoJ0+e1MCBAxUUFKTVq1erYcOG1V6blpam4uJih8PwC7qC2QIAAAC4EjzyiFdJSYkGDBggi8WiNWvWqHHjxhe93mKxyGKxOJzj8S4AAACg7nG6QCktLVVeXp79dX5+vnJzcxUWFqbo6GgdO3ZMhw4dUmFhoSRp3759kqTIyEhFRkaqpKRE/fv316lTp7Ry5UqVlJSopKREknTVVVepQYMGrvhcAAAAAHyQYZqmUw+jbd68WXFxcRecT05OVkZGhjIyMjRmzJgLxmfMmKGZM2dWe7/0Y7HTunXrGuXh36ilM2kDV8Tpwq0ujUdfFQCAL6s4W+DpFKr121a/8XQKHvHKwdWeTuGSnC5QvAUFCrwRBQoAAP/jzQXKyFZJnk7BI149mOnpFC7JK/qgAAAAAIBEgQIAAADAi1CgAAAAAPAaFCgAAAAAvIZH+qAAAAAAnlTp6QRQLadnULKzs5WYmCir1SrDMJSZmekw/tZbb6l///4KDw+XYRjKzc2tNpZpmkpISKgyDgAAAID6x+kZlLKyMsXExCglJUVDhgypcrxv374aPny4xo0bd9FY8+bNoyN8HXX6u80ujRdwdT+XxnMXtgUGAACoHacLlISEBCUkJFQ7PmrUKEnSgQMHLhonNzdXf/3rX7Vz505FRUU5mwYAAACAOsgji+RPnTql3/72t1q4cKEiIyM9kQIAAAAAL+SRRfIPP/yw+vTpozvvvNMTbw8AAIB6rlKmp1NANa54gbJmzRpt3LhR//nPf2p8j81mk81mczhnmibrVwAAAIA65oo/4rVx40Z9/fXXatasmfz9/eXv/2ONNHToUPXr16/Ke9LT0xUSEuJwmJUnr2DWAAAAAK6EK16gPPbYY/r000+Vm5trPyRp7ty5WrZsWZX3pKWlqbi42OEw/IKuYNYAAAAArgSnH/EqLS1VXl6e/XV+fr5yc3MVFham6OhoHTt2TIcOHVJhYaEkad++fZKkyMhIh+PnoqOj1aZNmyrf02KxyGKxOJzj8S4AAACg7nF6BmXnzp3q3r27unfvLklKTU1V9+7dNX36dEk/rjHp3r27Bg0aJEkaMWKEunfvrsWLF7swbQAAAODymfX0f77AME3TNzL9Gf9GLT2dAq6g04VbXR6TpooAALhXxdkCT6dQrbtaDfZ0Ch7x5sE1nk7hkjzSBwUAAAAAqkKBAgAAAMBreKRRIwAAAOBJlZ5OANViBgUAAACA16BAAQAAAOA1KFAAAAAAeA2nC5Ts7GwlJibKarXKMAxlZmY6jL/11lvq37+/wsPDZRiGvVP8z+Xk5OiWW25RYGCggoODdfPNN+v06dOX8xkAAAAA1BFOL5IvKytTTEyMUlJSNGTIkCrH+/btq+HDh2vcuHFVxsjJydHAgQOVlpamBQsWyN/fX5988on8/JjQQdXoWQIAl0bPKKDmfLQVYL3gdIGSkJCghISEasdHjRolSTpw4EC11zz88MN68MEH9dhjj9nPdezY0dlUAAAAANQxV3zK4siRI9q+fbtatGihPn36KCIiQr/+9a+1bdu2K50KAAAAAC9zxQuUb775RpI0c+ZMjRs3TuvWrdMNN9ygW2+9Vfv376/yHpvNppKSEoeDaTkAAACg7rniBUpl5Y9tce6//36NGTNG3bt319y5c9WxY0e99NJLVd6Tnp6ukJAQh8OsPHkl0wYAAABwBVzxAiUqKkqS1KVLF4fznTt31qFDh6q8Jy0tTcXFxQ6H4Rfk9lwBAABQN1XKrJeHL3B6kXxttW7dWlarVfv27XM4/9VXX1W7+N5ischisTicMwzDbTkCAAAA8AynC5TS0lLl5eXZX+fn5ys3N1dhYWGKjo7WsWPHdOjQIRUWFkqSvRCJjIxUZGSkDMPQ5MmTNWPGDMXExKhbt25avny59u7dqzfffNNFHwsAAACAL3K6QNm5c6fi4uLsr1NTUyVJycnJysjI0Jo1azRmzBj7+IgRIyRJM2bM0MyZMyVJkyZN0pkzZ/Twww/r2LFjiomJUVZWltq1a1ebzwIAAADAxxmmj26H5d+opadTAADAq9CoEd6m4myBp1Oo1p3Rd3g6BY94+9BaT6dwSbRuBwAAQL1TWU8PZy1cuFCtW7dW48aNFRsbq48//rjaa1988UXddNNNCg0NVWhoqOLj4y96fXUoUAAAAABc4PXXX1dqaqpmzJih3bt3KyYmRgMGDNCRI0eqvH7z5s0aOXKkNm3apJycHF1zzTXq37+/Cgqcm0njES8AAOoIHvGCt/HmR7wS6+kjXu848YhXbGysbrzxRj3//POSfuxneM011+iBBx7QY489dsn7z507p9DQUD3//PMaPXp0jd+XGRQAAACgnrDZbCopKXE4bDbbBdedPXtWu3btUnx8vP2cn5+f4uPjlZOTU6P3OnXqlMrLyxUWFuZUjhQoAAAAQD2Rnp6ukJAQhyM9Pf2C644ePapz584pIiLC4XxERISKiopq9F5Tp06V1Wp1KHJq4oo3agQAAAA8zfSRruqulpaWZm8Tct7PG6K7wl/+8he99tpr2rx5sxo3buzUvU7PoGRnZysxMVFWq1WGYSgzM9Nh/K233lL//v0VHh4uwzCUm5t7QYyioiKNGjVKkZGRCgwM1A033KBVq1Y5mwoAAAAAJ1gsFgUHBzscVRUozZs3V4MGDXT48GGH84cPH1ZkZORF3+OZZ57RX/7yF73//vv6xS9+4XSOTs+glJWVKSYmRikpKRoyZEiV43379tXw4cM1bty4KmOMHj1aJ06c0Jo1a9S8eXO98sorGj58uHbu3Knu3bs7/SEAAPip+rpY3BdyBOAbGjVqpB49euiDDz5QUlKSpB8XyX/wwQeaOHFitffNnj1bs2bN0vr169WzZ8/Lem+nC5SEhAQlJCRUOz5q1ChJ0oEDB6q95sMPP9SiRYvUq1cvSdITTzyhuXPnateuXRQoAAAAgBdITU1VcnKyevbsqV69emnevHkqKyvTmDFjJP046dCyZUv7Gpann35a06dP1yuvvKLWrVvb16o0bdpUTZs2rfH7emQNSp8+ffT6669r0KBBatasmf75z3/qzJkz6tevnyfSAQAAQD1TWU/XoDjj7rvv1g8//KDp06erqKhI3bp107p16+wL5w8dOiQ/v/+tGFm0aJHOnj2ru+66yyHOjBkzNHPmzBq/r0cKlH/+85+6++67FR4eLn9/fzVp0kSrV69W+/btq7zeZrNdsP2ZaZoyDONKpAsAAADUSxMnTqz2ka7Nmzc7vL7YE1TO8Mg2w9OmTdOJEye0YcMG7dy5U6mpqRo+fLg+++yzKq+vajs0s/LkFc4aAAAAgLtd8RmUr7/+Ws8//7z27Nmjrl27SpJiYmK0detWLVy4UIsXL77gnqq2QwsN73RF8gUAAABw5VzxAuXUqVOS5PC8miQ1aNBAlZWVVd5jsVgu2P6Mx7sAAACAusfpAqW0tFR5eXn21/n5+crNzVVYWJiio6N17NgxHTp0SIWFhZKkffv2SZIiIyMVGRmpTp06qX379rr//vv1zDPPKDw8XJmZmcrKytLatWtd9LEAAACA6pkmi+S9lWE6+aezefNmxcXFXXA+OTlZGRkZysjIsG899lM/Xb2/f/9+PfbYY9q2bZtKS0vVvn17Pfroo/YtimvCv1FLZ9IGLlBf+yQAAHClVJwt8HQK1Uq4pvq2GXXZe9++5+kULsnpAsVbUKCgtihQAABwLwoU7+MLBYpHdvECAAAAgKpQoAAAAADwGh5p1AgAAAB4UtV7x8IbMIMCAAAAwGtQoAAAAADwGhQoAAAAALyG0wVKdna2EhMTZbVaZRiGMjMz7WPl5eWaOnWqrr/+egUGBspqtWr06NH2po3nHTt2TPfcc4+Cg4PVrFkzjR07VqWlpbX+MAAAAAB8m9OL5MvKyhQTE6OUlBQNGTLEYezUqVPavXu3pk2bppiYGB0/flwPPfSQBg8erJ07d9qvu+eee/T9998rKytL5eXlGjNmjMaPH69XXnml9p8IqCF6lngvetQAANzNlE+2AqwXatWo0TAMrV69WklJSdVes2PHDvXq1UsHDx5UdHS0vvzyS3Xp0kU7duxQz549JUnr1q3T7bffru+++05Wq7VG702jRqDuokABgLrBmxs19r9moKdT8Ij3v13n6RQuye1rUIqLi2UYhpo1ayZJysnJUbNmzezFiSTFx8fLz89P27dvd3c6AAAAALyYW/ugnDlzRlOnTtXIkSMVHBwsSSoqKlKLFi0ck/D3V1hYmIqKiqqMY7PZZLPZHM6ZpinDMNyTOAAAAACPcNsMSnl5uYYPHy7TNLVo0aJaxUpPT1dISIjDYVaedFGmAAAAALyFWwqU88XJwYMHlZWVZZ89kaTIyEgdOXLE4fqKigodO3ZMkZGRVcZLS0tTcXGxw2H4BbkjdQAAANQDlTLr5eELXP6I1/niZP/+/dq0aZPCw8Mdxnv37q0TJ05o165d6tGjhyRp48aNqqysVGxsbJUxLRaLLBaLwzke7wIAAADqHqcLlNLSUuXl5dlf5+fnKzc3V2FhYYqKitJdd92l3bt3a+3atTp37px9XUlYWJgaNWqkzp07a+DAgRo3bpwWL16s8vJyTZw4USNGjKjxDl4AAAAA6iantxnevHmz4uLiLjifnJysmTNnqk2bNlXet2nTJvXr10/Sj40aJ06cqHfeeUd+fn4aOnSo5s+fr6ZNm9Y4D7YZRn1w+tuNLo8ZcM0tLo9ZX/m5eCa38vJ3fQcAr+TN2wzHXzPA0yl4xIZv13s6hUtyegalX79+ulhNU5N6JywsjKaMAAAA8JhatAKEm7m9DwoAAAAA1BQFCgAAAACvQYECAAAAwGtQoAAAAADwGi7vgwIAAAB4O19pWlgfOT2Dkp2drcTERFmtVhmGoczMTPtYeXm5pk6dquuvv16BgYGyWq0aPXq0CgsL7dccOHBAY8eOVZs2bRQQEKB27dppxowZOnv2rEs+EAAAAADf5XSBUlZWppiYGC1cuPCCsVOnTmn37t2aNm2adu/erbfeekv79u3T4MGD7dfs3btXlZWVeuGFF/T5559r7ty5Wrx4sf74xz/W7pMAAAAA8HlON2p0uNkwtHr1aiUlJVV7zY4dO9SrVy8dPHhQ0dHRVV4zZ84cLVq0SN98802N35tGjQCA6pwu3OrymAHWm1weE6jrvLlRY9zVt3k6BY/Y9F2Wp1O4JLcvki8uLpZhGGrWrNlFrwkLC3N3KgAAAAC8nFsXyZ85c0ZTp07VyJEjFRwcXOU1eXl5WrBggZ555hl3pgIAAADYmSyS91puK1DKy8s1fPhwmaapRYsWVXlNQUGBBg4cqGHDhmncuHHVxrLZbLLZbA7nTNOUYRguzRkAAACAZ7nlEa/zxcnBgweVlZVV5exJYWGh4uLi1KdPHy1ZsuSi8dLT0xUSEuJwmJUn3ZE6AAAAAA9yeYFyvjjZv3+/NmzYoPDw8AuuKSgoUL9+/dSjRw8tW7ZMfn4XTyMtLU3FxcUOh+EX5OrUAQAAAHiY0494lZaWKi8vz/46Pz9fubm5CgsLU1RUlO666y7t3r1ba9eu1blz51RUVCRJCgsLU6NGjezFSatWrfTMM8/ohx9+sMeKjIys8j0tFossFovDOR7vAgAAAOoepwuUnTt3Ki4uzv46NTVVkpScnKyZM2dqzZo1kqRu3bo53Ldp0yb169dPWVlZysvLU15enq6++mqHa2qx4zEAAABQY5X83Om1atUHxZPogwKgrqF3B4C6xpv7oNzc8lZPp+AR2QUfeDqFS3J7HxQAAAAAqCkKFAAAAABegwIFAAAAgNdwayd5AAAAwBv55CLseoIZFAAAAABegwIFAAAAgNdwukDJzs5WYmKirFarDMNQZmamfay8vFxTp07V9ddfr8DAQFmtVo0ePVqFhYVVxrLZbOrWrZsMw1Bubu7lfgYAAAAAdYTTa1DKysoUExOjlJQUDRkyxGHs1KlT2r17t6ZNm6aYmBgdP35cDz30kAYPHqydO3deEGvKlCmyWq365JNPLv8TAEAd4Y6eJfRWAQD4GqcLlISEBCUkJFQ5FhISoqysLIdzzz//vHr16qVDhw4pOjrafv69997T+++/r1WrVum9995zNg0AAADgslWyTN5ruX0Xr+LiYhmGoWbNmtnPHT58WOPGjVNmZqaaNGni7hQAAAAA+Ai3FihnzpzR1KlTNXLkSAUHB0uSTNPUvffeqwkTJqhnz546cODAJePYbDbZbDaHc6ZpyjAMd6QNAAAAwEPctotXeXm5hg8fLtM0tWjRIvv5BQsW6OTJk0pLS6txrPT0dIWEhDgcZuVJd6QNAAAAwIPcUqCcL04OHjyorKws++yJJG3cuFE5OTmyWCzy9/dX+/btJUk9e/ZUcnJylfHS0tJUXFzscBh+Qe5IHQAAAPVApcx6efgClz/idb442b9/vzZt2qTw8HCH8fnz5+upp56yvy4sLNSAAQP0+uuvKzY2tsqYFotFFovF4RyPdwEAAAB1j9MFSmlpqfLy8uyv8/PzlZubq7CwMEVFRemuu+7S7t27tXbtWp07d05FRUWSpLCwMDVq1MhhJy9Jatq0qSSpXbt2uvrqq2vzWQAAAAD4OKcLlJ07dyouLs7+OjU1VZKUnJysmTNnas2aNZKkbt26Ody3adMm9evX7/IzBQAAAFDnOV2g9OvXT6ZZ/fNrFxurSuvWrZ2+B/VPZNNQl8csKj3u8piu5o4HGfluq1/Klz7p6RQuqW+Lzi6Pue3Ily6PCQC4MtzeBwUAAADwNvyC3Hu5bZthAAAAAHAWBQoAAAAAr0GBAgAAAMBrUKAAAAAA8BoskgcAAEC94ytd1esjp2dQsrOzlZiYKKvVKsMwlJmZaR8rLy/X1KlTdf311yswMFBWq1WjR49WYWHhBXHeffddxcbGKiAgQKGhoUpKSqrN5wAAAABQBzg9g1JWVqaYmBilpKRoyJAhDmOnTp3S7t27NW3aNMXExOj48eN66KGHNHjwYO3cudN+3apVqzRu3Dj9+c9/1i233KKKigrt2bOn9p8GdZYv9CyRpNPfbXZpvICr+7k0Huqf4GnvezqFS6JnCQDgpwyzFptAG4ah1atXX3T2Y8eOHerVq5cOHjyo6OhoVVRUqHXr1vrTn/6ksWPHXu5by79Ry8u+F3AXChQAAP6n4myBp1OoVi/rrz2dgkd8XLjF0ylcktsXyRcXF8swDDVr1kyStHv3bhUUFMjPz0/du3dXVFSUEhISmEEBAAAA4N5F8mfOnNHUqVM1cuRIBQcHS5K++eYbSdLMmTP17LPPqnXr1vrrX/+qfv366auvvlJYWNgFcWw2m2w2m8M50zRlGIY70wcAAEAdZbJI3mu5bQalvLxcw4cPl2maWrRokf18ZWWlJOnxxx/X0KFD1aNHDy1btkyGYeiNN96oMlZ6erpCQkIcDrPypLtSBwAAAOAhbilQzhcnBw8eVFZWln32RJKioqIkSV26dLGfs1gsatu2rQ4dOlRlvLS0NBUXFzschl+QO1IHAAAA4EEuL1DOFyf79+/Xhg0bFB4e7jDeo0cPWSwW7du3z+GeAwcOqFWrVlXGtFgsCg4Odjh4vAsAAACoe5xeg1JaWqq8vDz76/z8fOXm5iosLExRUVG66667tHv3bq1du1bnzp1TUVGRJCksLEyNGjVScHCwJkyYoBkzZuiaa65Rq1atNGfOHEnSsGHDXPSxAAAAAPgip7cZ3rx5s+Li4i44n5ycrJkzZ6pNmzZV3rdp0yb169dP0o8zJmlpaVqxYoVOnz6t2NhYzZs3T127dq1xHmwzDAB1w+nCrS6PGWC9yeUxATjPm7cZ7hlVP/+e2Pm96//OdbVa9UHxJAoUAKgbKFCAuosCxfv4QoHi9j4oAAAAAFBTFCgAAAAAvIZbGzUCAAAA3qiSRo1eixkUAAAAAF6DAgUAAACA16BAAQAAAOA1nC5QsrOzlZiYKKvVKsMwlJmZaR8rLy/X1KlTdf311yswMFBWq1WjR49WYWGhQ4yvvvpKd955p5o3b67g4GD17dtXmzZtqvWHAQAAAODbnF4kX1ZWppiYGKWkpGjIkCEOY6dOndLu3bs1bdo0xcTE6Pjx43rooYc0ePBg7dy5037dHXfcoQ4dOmjjxo0KCAjQvHnzdMcdd+jrr79WZGRk7T8V6hz6JAB1F9+LADzBR1sB1gu1atRoGIZWr16tpKSkaq/ZsWOHevXqpYMHDyo6OlpHjx7VVVddpezsbN1004//KJ08eVLBwcHKyspSfHx8jd6bRo31CwUKAAC+x5sbNXaP/JWnU/CI/xT929MpXJLb16AUFxfLMAw1a9ZMkhQeHq6OHTvq5ZdfVllZmSoqKvTCCy+oRYsW6tGjh7vTAQAAAODF3NoH5cyZM5o6dapGjhyp4OBgST/OumzYsEFJSUkKCgqSn5+fWrRooXXr1ik0NLTKODabTTabzeGcaZoyDMOd6QMAAAC4wtw2g1JeXq7hw4fLNE0tWrTIft40Tf3hD39QixYttHXrVn388cdKSkpSYmKivv/++ypjpaenKyQkxOEwK0+6K3UAAAAAHuKWNSjni5NvvvlGGzduVHh4uH3sgw8+UP/+/XX8+HH7rIokdejQQWPHjtVjjz12wftUNYMSGt6JGZR6hDUoAAD4Hm9egxIT2cfTKXjEJ0UfejqFS3L5I17ni5P9+/dr06ZNDsWJ9ONOX5Lk5+c4eePn56fKysoqY1osFlksFodzFCcAAABA3eN0gVJaWqq8vDz76/z8fOXm5iosLExRUVG66667tHv3bq1du1bnzp1TUVGRJCksLEyNGjVS7969FRoaquTkZE2fPl0BAQF68cUXlZ+fr0GDBrnukwEAAADwOU4XKDt37lRcXJz9dWpqqiQpOTlZM2fO1Jo1ayRJ3bp1c7hv06ZN6tevn5o3b65169bp8ccf1y233KLy8nJ17dpVb7/9tmJiYmrxUVCnVZ7zdAZ1hjvmHtlJHgAAuEqt1qB4En1Q6pfT3212ecyAq/u5PKYvoEABAFwprEHxPvVyDQoAAADg7Ux+vea13N6oEQAAAABqigIFAAAAgNegQAEAAADgNShQAAAAAHgNFskDAACg3qn0zY1s6wWnZ1Cys7OVmJgoq9UqwzCUmZnpMD5z5kx16tRJgYGBCg0NVXx8vLZv3+5wzbFjx3TPPfcoODhYzZo109ixY1VaWlqrDwIAAADA9zk9g1JWVqaYmBilpKRoyJAhF4xfe+21ev7559W2bVudPn1ac+fOVf/+/ZWXl6errrpKknTPPffo+++/V1ZWlsrLyzVmzBiNHz9er7zySu0/Eeqk+tqzxB34fRHqg4jAZi6P+fXmOS6N1/TGcS6NBwB1Ra0aNRqGodWrVyspKanaa0pKShQSEqINGzbo1ltv1ZdffqkuXbpox44d6tmzpyRp3bp1uv322/Xdd9/JarXW6L1p1AgAqA4FCuAdvLlR43URv/R0Ch6x5/BHnk7hkty6SP7s2bNasmSJQkJCFBMTI0nKyclRs2bN7MWJJMXHx8vPz++CR8EAAAAAdzDr6f98gVsWya9du1YjRozQqVOnFBUVpaysLDVv3lySVFRUpBYtWjgm4e+vsLAwFRUVVRnPZrPJZrM5nDNNU4ZhuCN9AAAAAB7ilhmUuLg45ebm6sMPP9TAgQM1fPhwHTly5LLjpaenKyQkxOEwK0+6MGMAAAAA3sAtBUpgYKDat2+vX/7yl1q6dKn8/f21dOlSSVJkZOQFxUpFRYWOHTumyMjIKuOlpaWpuLjY4TD8gtyROgAAAAAPuiKNGisrK+2PaPXu3VsnTpzQrl277OMbN25UZWWlYmNjq7zfYrEoODjY4eDxLgAAAKDucXoNSmlpqfLy8uyv8/PzlZubq7CwMIWHh2vWrFkaPHiwoqKidPToUS1cuFAFBQUaNmyYJKlz584aOHCgxo0bp8WLF6u8vFwTJ07UiBEjaryDFwAAAFAbNGr0Xk5vM7x582bFxcVdcD45OVmLFy/Wb3/7W23fvl1Hjx5VeHi4brzxRj3xxBO68cYb7dceO3ZMEydO1DvvvCM/Pz8NHTpU8+fPV9OmTWucB9sMA0DdcLpwq8tjBlhvcnlMAM7z5m2GO7fo5ekUPOLLIx97OoVLqlUfFE+iQAGAuoECBai7KFC8jy8UKFdkDQoAAAAA1AQFCgAAAACv4ZZGjQAAAIA385Wu6vURMygAAAAAvAYFCgAAAACv4XSBkp2drcTERFmtVhmGoczMTIfxmTNnqlOnTgoMDFRoaKji4+O1fft2+/iBAwc0duxYtWnTRgEBAWrXrp1mzJihs2fP1vrDAAAAAPBtTq9BKSsrU0xMjFJSUjRkyJALxq+99lo9//zzatu2rU6fPq25c+eqf//+ysvL01VXXaW9e/eqsrJSL7zwgtq3b689e/Zo3LhxKisr0zPPPOOSDwXAt7HtbP3Cnw0A4Kdq1QfFMAytXr1aSUlJ1V5TUlKikJAQbdiwQbfeemuV18yZM0eLFi3SN998U+P3pg8KUHdRoABA3eDNfVCuvaqnp1PwiK9+2OnpFC7JrWtQzp49qyVLligkJEQxMTHVXldcXKywsDB3pgIAAADAB7ilQFm7dq2aNm2qxo0ba+7cucrKylLz5s2rvDYvL08LFizQ/fff745UAAAAAPgQt/RBiYuLU25uro4ePaoXX3xRw4cP1/bt29WiRQuH6woKCjRw4EANGzZM48aNqzaezWaTzWZzOGeapgzDcEf6AAAAADzELTMogYGBat++vX75y19q6dKl8vf319KlSx2uKSwsVFxcnPr06aMlS5ZcNF56erpCQkIcDrPypDtSBwAAAOBBV6QPSmVlpcMMSEFBgfr166cePXpo2bJl8vO7eBppaWkqLi52OAy/IHenDQAAgDrKrKf/8wVOP+JVWlqqvLw8++v8/Hzl5uYqLCxM4eHhmjVrlgYPHqyoqCgdPXpUCxcuVEFBgYYNGybpf8VJq1at9Mwzz+iHH36wx4qMjKzyPS0WiywWi8M5Hu8CAAAA6h6nC5SdO3cqLi7O/jo1NVWSlJycrMWLF2vv3r1avny5jh49qvDwcN14443aunWrunbtKknKyspSXl6e8vLydPXVVzvErsWOxwAAAADqgFr1QfEk+qDAG7m6fwe9OwAAvsyb+6B0uKqHp1PwiP0/7PJ0Cpd0RdagAAAAAEBNuGWbYQAAAMCbVfrmQ0T1AjMoAAAAALwGBQoAAAAAr0GBAgAAAMBrsAYFAAAA9Y6vNC2sj5yeQcnOzlZiYqKsVqsMw1BmZqbD+MyZM9WpUycFBgYqNDRU8fHx2r59e5WxbDabunXrJsMwlJubezn5AwAAAKhDnC5QysrKFBMTo4ULF1Y5fu211+r555/XZ599pm3btql169bq37+/Q8f486ZMmSKr1ep81gAAAADqJKcf8UpISFBCQkK147/97W8dXj/77LNaunSpPv30U91666328++9957ef/99rVq1Su+9956zaQAAAACog9y6BuXs2bNasmSJQkJCFBMTYz9/+PBhjRs3TpmZmWrSpIk7UwAAAADgQ9xSoKxdu1YjRozQqVOnFBUVpaysLDVv3lySZJqm7r33Xk2YMEE9e/bUgQMHLhnPZrPJZrM5nDNNU4ZhuCN9AAAA1HGmWenpFFANt2wzHBcXp9zcXH344YcaOHCghg8friNHjkiSFixYoJMnTyotLa3G8dLT0xUSEuJwmJUn3ZE6AAAAAA9yS4ESGBio9u3b65e//KWWLl0qf39/LV26VJK0ceNG5eTkyGKxyN/fX+3bt5ck9ezZU8nJyVXGS0tLU3FxscNh+AW5I3UAAAAAHnRF+qBUVlbaH9GaP3++nnrqKftYYWGhBgwYoNdff12xsbFV3m+xWGSxWBzO8XgXAAAAUPc4XaCUlpYqLy/P/jo/P1+5ubkKCwtTeHi4Zs2apcGDBysqKkpHjx7VwoULVVBQoGHDhkmSoqOjHeI1bdpUktSuXTtdffXVtfksAAAAAHyc0wXKzp07FRcXZ3+dmpoqSUpOTtbixYu1d+9eLV++XEePHlV4eLhuvPFGbd26VV27dnVd1qh3ThdudXnMAOtNPhETAAC4XiWd5L2WYZqmT/7p+Ddq6ekUcAX5SoECAAD+p+JsgadTqFar8F94OgWPOPjfTz2dwiW5ZZE8AAAAAFwOChQAAAAAXoMCBQAAAIDXuCLbDAMAAADexEeXYdcLzKAAAAAA8BoUKAAAAAC8htMFSnZ2thITE2W1WmUYhjIzMx3GZ86cqU6dOikwMFChoaGKj4/X9u3bL4jz7rvvKjY2VgEBAQoNDVVSUtLlfgYAAAAAdYTTa1DKysoUExOjlJQUDRky5ILxa6+9Vs8//7zatm2r06dPa+7cuerfv7/y8vJ01VVXSZJWrVqlcePG6c9//rNuueUWVVRUaM+ePbX/NKiz3NGzhN4qAAAA3qdWjRoNw9Dq1asvOvtRUlKikJAQbdiwQbfeeqsqKirUunVr/elPf9LYsWMv961p1Ihao0ABAMC9vLlR49Vh13k6BY/47pj3Twq4dQ3K2bNntWTJEoWEhCgmJkaStHv3bhUUFMjPz0/du3dXVFSUEhISmEEBAAAA4J4CZe3atWratKkaN26suXPnKisrS82bN5ckffPNN5J+XKvyxBNPaO3atQoNDVW/fv107NixKuPZbDaVlJQ4HGwNBwAAANQ9bilQ4uLilJubqw8//FADBw7U8OHDdeTIEUlSZWWlJOnxxx/X0KFD1aNHDy1btkyGYeiNN96oMl56erpCQkIcDrPypDtSBwAAAOBBbilQAgMD1b59e/3yl7/U0qVL5e/vr6VLl0qSoqKiJEldunSxX2+xWNS2bVsdOnSoynhpaWkqLi52OAy/IHekDgAAgHrANM16efiCK9IHpbKyUjabTZLUo0cPWSwW7du3zz5eXl6uAwcOqFWrVlXeb7FYFBwc7HAYhnElUgcAAABwBTm9zXBpaany8vLsr/Pz85Wbm6uwsDCFh4dr1qxZGjx4sKKionT06FEtXLhQBQUFGjZsmCQpODhYEyZM0IwZM3TNNdeoVatWmjNnjiTZrwEAAABQPzldoOzcuVNxcXH216mpqZKk5ORkLV68WHv37tXy5ct19OhRhYeH68Ybb9TWrVvVtWtX+z1z5syRv7+/Ro0apdOnTys2NlYbN25UaGioCz4SUDO+0FuFbYsBAEB9U6s+KJ5EHxR4IwoUAAD+x5v7oLQM7Xrpi+qgguOfezqFS3J6BgUAAADwdZW++Tv6euGKLJIHAAAAgJqgQAEAAADgNShQAAAAAHgNChQAAAAAXoNF8gAAAKh3TLFI3ls5PYOSnZ2txMREWa1WGYahzMxMh/GZM2eqU6dOCgwMVGhoqOLj47V9+3aHa7766ivdeeedat68uYKDg9W3b19t2rSpVh8EAAAAgO9zegalrKxMMTExSklJ0ZAhQy4Yv/baa/X888+rbdu2On36tObOnav+/fsrLy9PV111lSTpjjvuUIcOHbRx40YFBARo3rx5uuOOO/T1118rMjKy9p8KdY6r+4tI7ukxQt8SAACA2qlVo0bDMLR69WolJSVVe01JSYlCQkK0YcMG3XrrrTp69KiuuuoqZWdn66abfvxh7uTJkwoODlZWVpbi4+Nr9N40aqxffKVAAQAA/+PNjRojm3X2dAoeUXTiS0+ncEluXSR/9uxZLVmyRCEhIYqJiZEkhYeHq2PHjnr55ZdVVlamiooKvfDCC2rRooV69OjhznQAAAAAeDm3LJJfu3atRowYoVOnTikqKkpZWVlq3ry5pB9nXTZs2KCkpCQFBQXJz89PLVq00Lp16xQaGlplPJvNJpvN5nDONE0ZhuGO9AEAAFDH1eIhIriZW2ZQ4uLilJubqw8//FADBw7U8OHDdeTIEUk/fjH84Q9/UIsWLbR161Z9/PHHSkpKUmJior7//vsq46WnpyskJMThMCtPuiN1AAAAAB7k9jUoktShQwelpKQoLS1NH3zwgfr376/jx48rODjY4ZqxY8fqscceu+D+qmZQQsM7MYNSj7AGBQAA3+PNa1AiQjp5OgWPOFy819MpXNIV6YNSWVlpLzBOnTolSfLzc5y88fPzU2VlZZX3WywWWSwWh3MUJwAAAEDd43SBUlpaqry8PPvr/Px85ebmKiwsTOHh4Zo1a5YGDx6sqKgoHT16VAsXLlRBQYGGDRsmSerdu7dCQ0OVnJys6dOnKyAgQC+++KLy8/M1aNAg130yAAAAAD7H6QJl586diouLs79OTU2VJCUnJ2vx4sXau3evli9frqNHjyo8PFw33nijtm7dqq5du0qSmjdvrnXr1unxxx/XLbfcovLycnXt2lVvv/22facv4Od4HAv1gZ8bZoYr3bAI9PTBDS6NF9CqZtvLA4ArVdJJ3mvVag2KJ9EHBUBdQ4ECoK7x5jUoV4V09HQKHvFD8T5Pp3BJbu2DAgAAAADOoEABAAAA4DWuyC5eAAAAgDfx0VUO9QIzKAAAAAC8BgUKAAAAAK/hdIGSnZ2txMREWa1WGYahzMzMaq+dMGGCDMPQvHnzHM4fO3ZM99xzj4KDg9WsWTONHTtWpaWlzqYCAAAAoI5xeg1KWVmZYmJilJKSoiFDhlR73erVq/XRRx/JarVeMHbPPffo+++/V1ZWlsrLyzVmzBiNHz9er7zyirPpoJ44XbjV5THprQJv444tgd2BbYEBAO7kdIGSkJCghISEi15TUFCgBx54QOvXr7+gO/yXX36pdevWaceOHerZs6ckacGCBbr99tv1zDPPVFnQAAAAAK7kK78Uqo9cvgalsrJSo0aN0uTJk+3d438qJydHzZo1sxcnkhQfHy8/Pz9t377d1ekAAAAA8CEuL1Cefvpp+fv768EHH6xyvKioSC1atHA45+/vr7CwMBUVFbk6HQAAAAA+xKV9UHbt2qXnnntOu3fvlmEYLotrs9lks9kczpmm6dL3AAAAAOB5Lp1B2bp1q44cOaLo6Gj5+/vL399fBw8e1COPPKLWrVtLkiIjI3XkyBGH+yoqKnTs2DFFRkZWGTc9PV0hISEOh1l50pWpAwAAAPACLp1BGTVqlOLjHXd3GTBggEaNGqUxY8ZIknr37q0TJ05o165d6tGjhyRp48aNqqysVGxsbJVx09LSlJqa6nAuNLyTK1MHAABAPUInee/ldIFSWlqqvLw8++v8/Hzl5uYqLCxM0dHRCg8Pd7i+YcOGioyMVMeOHSVJnTt31sCBAzVu3DgtXrxY5eXlmjhxokaMGFHtDl4Wi0UWi8XhHI93AQAAAHWP04947dy5U927d1f37t0lSampqerevbumT59e4xj/+Mc/1KlTJ9166626/fbb1bdvXy1ZssTZVAAAAADUMYbpo/Nb/o1aejoFXISrGyvSVBEAAN9TcbbA0ylUK7Rpe0+n4BHHS/MufZGHuXybYQAAAAC4XC5dJA8AAAD4gkr55ENE9QIzKAAAAAC8BgUKAAAAAK9BgQIAAADAa1CgAAAAAPAaThco2dnZSkxMlNVqlWEYyszMrPbaCRMmyDAMzZs3z37uwIEDGjt2rNq0aaOAgAC1a9dOM2bM0NmzZy8nfwAAAMBppmnWy8MXOL2LV1lZmWJiYpSSkqIhQ4ZUe93q1av10UcfXdAdfu/evaqsrNQLL7yg9u3ba8+ePRo3bpzKysr0zDPPOP8J4JVc3bfE1X1VJHqrAAAAeCOnC5SEhAQlJCRc9JqCggI98MADWr9+vQYNGuQwNnDgQA0cOND+um3bttq3b58WLVpEgQIAAADUcy5fg1JZWalRo0Zp8uTJ6tq1a43uKS4uVlhYmKtTAQAAAOBjXN6o8emnn5a/v78efPDBGl2fl5enBQsWXHT2xGazyWazOZwzTVOGYdQqVwAAAADexaUFyq5du/Tcc89p9+7dNSoeCgoKNHDgQA0bNkzjxo2r9rr09HT96U9/cjhn+DWV0SC41jkDAACg/qn0kQXj9ZFLH/HaunWrjhw5oujoaPn7+8vf318HDx7UI488otatWztcW1hYqLi4OPXp00dLliy5aNy0tDQVFxc7HIZfkCtTBwAAAOAFXDqDMmrUKMXHxzucGzBggEaNGqUxY8bYzxUUFCguLk49evTQsmXL5Od38TrJYrHIYrE4nOPxLgAAAKDucbpAKS0tVV5env11fn6+cnNzFRYWpujoaIWHhztc37BhQ0VGRqpjx46SfixO+vXrp1atWumZZ57RDz/8YL82MjLycj8HAAAAgDrA6QJl586diouLs79OTU2VJCUnJysjI+OS92dlZSkvL095eXm6+uqrHcZ8pXkMAAAAfJspfu70Vobpo1WBf6OWnk4BAACvQlNbeJuKswWeTqFagU1aezoFjyg7dcDTKVySy/ugAAAAAMDlokABAAAA4DUoUAAAAAB4DZd3kgcAAAC8HY0avRczKAAAAAC8BgUKAAAAAK/hdIGSnZ2txMREWa1WGYahzMzMaq+dMGGCDMPQvHnzqhy32Wzq1q2bDMNQbm6us6kAAAAAqGOcXoNSVlammJgYpaSkaMiQIdVet3r1an300UeyWq3VXjNlyhRZrVZ98sknzqYBoA6jlwNwefg6B1AXOF2gJCQkKCEh4aLXFBQU6IEHHtD69es1aNCgKq9577339P7772vVqlV67733nE0DAAAAuGw+2qu8XnD5Ll6VlZUaNWqUJk+erK5du1Z5zeHDhzVu3DhlZmaqSZMmrk4BAAAAgI9yeYHy9NNPy9/fXw8++GCV46Zp6t5779WECRPUs2dPHThw4JIxbTabbDbbBXEMw3BFygAAAAC8hEt38dq1a5eee+45ZWRkVFs8LFiwQCdPnlRaWlqN46anpyskJMThMCtPuiptAAAAAF7CpQXK1q1bdeTIEUVHR8vf31/+/v46ePCgHnnkEbVu3VqStHHjRuXk5Mhiscjf31/t27eXJPXs2VPJyclVxk1LS1NxcbHDYfgFuTJ1AAAAAF7ApY94jRo1SvHx8Q7nBgwYoFGjRmnMmDGSpPnz5+upp56yjxcWFmrAgAF6/fXXFRsbW2Vci8Uii8XicI7HuwAAAHC5TLFI3ls5XaCUlpYqLy/P/jo/P1+5ubkKCwtTdHS0wsPDHa5v2LChIiMj1bFjR0lSdHS0w3jTpk0lSe3atdPVV1/t9AcAAAAAUHc4XaDs3LlTcXFx9tepqamSpOTkZGVkZLgsMQD1F70c4I1c3Z+Hr3MAqJph+ugm0P6NWno6BQBAPUKBAjiv4myBp1OolqXxNZ5OwSNsZ771dAqX5NJF8gAAAABQGy7vgwIAAAB4Ox99iKheYAYFAAAAgNegQAEAAADgNShQAAAAAHgN1qAAAACg3mENivdyegYlOztbiYmJslqtMgxDmZmZ1V47YcIEGYahefPmXTD27rvvKjY2VgEBAQoNDVVSUpKzqQAAAACoY5yeQSkrK1NMTIxSUlI0ZMiQaq9bvXq1PvroI1mt1gvGVq1apXHjxunPf/6zbrnlFlVUVGjPnj3OpgIAwBXjC31LXN2rRfKNzw2gbnG6QElISFBCQsJFrykoKNADDzyg9evXa9CgQQ5jFRUVeuihhzRnzhyNHTvWfr5Lly7OpgIAAACgjnH5IvnKykqNGjVKkydPVteuXS8Y3717twoKCuTn56fu3bsrKipKCQkJzKAAAAAAcH2B8vTTT8vf318PPvhglePffPONJGnmzJl64okntHbtWoWGhqpfv346duxYlffYbDaVlJQ4HCxsAgAAwOUy6+nhC1xaoOzatUvPPfecMjIyZBhGlddUVlZKkh5//HENHTpUPXr00LJly2QYht54440q70lPT1dISIjDYVaedGXqAAAAAH5m4cKFat26tRo3bqzY2Fh9/PHHF73+jTfeUKdOndS4cWNdf/31+te//uX0e7q0QNm6dauOHDmi6Oho+fv7y9/fXwcPHtQjjzyi1q1bS5KioqIkOa45sVgsatu2rQ4dOlRl3LS0NBUXFzschl+QK1MHAAAA8BOvv/66UlNTNWPGDO3evVsxMTEaMGCAjhw5UuX1H374oUaOHKmxY8fqP//5j5KSkpSUlOT0Ug6XFiijRo3Sp59+qtzcXPthtVo1efJkrV+/XpLUo0cPWSwW7du3z35feXm5Dhw4oFatWlUZ12KxKDg42OGoboYGAAAAQO09++yzGjdunMaMGaMuXbpo8eLFatKkiV566aUqr3/uuec0cOBATZ48WZ07d9aTTz6pG264Qc8//7xT7+v0Ll6lpaXKy8uzv87Pz1dubq7CwsIUHR2t8PBwh+sbNmyoyMhIdezYUZIUHBysCRMmaMaMGbrmmmvUqlUrzZkzR5I0bNgwZ9MBAAAAUEM2m002m83hnMVikcVicTh39uxZ7dq1S2lpafZzfn5+io+PV05OTpWxc3JylJqa6nBuwIABF+2bWCXTSZs2bapyzU1ycnKV17dq1cqcO3euw7mzZ8+ajzzyiNmiRQszKCjIjI+PN/fs2eNsKjVy5swZc8aMGeaZM2e8Mp6vxPSFHN0R0xdydEdMX8jRHTF9IUd3xPSFHN0R0xdydEdMX8jRHTF9IUd3xPSFHHFlzZgx44Kf42fMmHHBdQUFBaYk88MPP3Q4P3nyZLNXr15Vxm7YsKH5yiuvOJxbuHCh2aJFC6dydLpA8TXFxcWmJLO4uNgr4/lKTF/I0R0xfSFHd8T0hRzdEdMXcnRHTF/I0R0xfSFHd8T0hRzdEdMXcnRHTF/IEVfWmTNnzOLiYoejqmLTkwWK0494AQAAAPBNVT3OVZXmzZurQYMGOnz4sMP5w4cPKzIyssp7IiMjnbq+Oi7vgwIAAADAtzVq1Eg9evTQBx98YD9XWVmpDz74QL17967ynt69eztcL0lZWVnVXl8dZlAAAAAAXCA1NVXJycnq2bOnevXqpXnz5qmsrExjxoyRJI0ePVotW7ZUenq6JOmhhx7Sr3/9a/31r3/VoEGD9Nprr2nnzp1asmSJU+9b5wsUi8WiGTNm1GgqyxPxfCWmL+Tojpi+kKM7YvpCju6I6Qs5uiOmL+Tojpi+kKM7YvpCju6I6Qs5uiOmL+QI73X33Xfrhx9+0PTp01VUVKRu3bpp3bp1ioiIkCQdOnRIfn7/eyCrT58+euWVV/TEE0/oj3/8ozp06KDMzExdd911Tr2vYZqmr3S9BwAAAFDHsQYFAAAAgNegQAEAAADgNShQAAAAAHgNChQAAJxUWFjo6RQAoM6iQEGdtWfPnnr9/vB9/+///T+dOnXK02l4haNHj6qkpMTTadh17dpVr7zyiqfTqBPy8/M9nQKccPToUR09etTTaaCOo0CBV/juu+80fvz4Wsc5efKklixZol69eikmJsape0+fPq21a9faX6elpSk1NdV+TJ48WWfOnKlxvF/84heKjY3Viy++qJMnTzqVy5WUk5Pj8Lkl6eWXX1abNm3UokULjR8/XjabzUPZOae0tNTlMU+fPu3ymDX1pz/9yS2fyVecOHFCf/jDH9S8eXNFREQoNDRUkZGRSktL83jhNmvWLN1///0aNmyYjh075tFcrrSNGzeqS5cuVRaMxcXF6tq1q7Zu3VrjeO3atVObNm2UkpKiFStW6Lvvvqt1jtOmTVNFRUW144cOHdJtt91W6/fxNrfeeqveeuutasePHj2qtm3bOh3359+LERERat68uSZOnKgTJ07UImOgGibgBXJzc00/P7/Lvn/Lli3m6NGjzcDAQLNDhw7m1KlTzY8//tipGIsWLTLvuOMO++umTZuasbGxZr9+/cx+/fqZkZGR5rPPPlvjeNnZ2eaYMWPMoKAgMzAw0Bw9erSZnZ3tVE5VSUhIME+cOGF/nZ6ebh4/ftz++ujRo2bnzp1rHG/gwIHmX/7yF/vrTz/91PT39zfvu+8+869//asZGRlpzpgxo9Z519al/tuXlJSYffr0cdn7nTlzxnzmmWfMiIgIp+47d+6cuXTpUnPQoEFm165dzeuuu85MTEw0ly9fblZWVjoVyzAM8/Dhw07dU9Mc//KXv5h9+vQxe/bsaU6dOtU8deqUy9+nNv773/+a1157rRkYGGiOHz/enDt3rjl37lxz3LhxZmBgoNmjRw/z9OnT5vbt283nnnuuRjG//vprp/8MLuabb74x4+LizIiICHPNmjUui+tqxcXFNTpqKjEx8aLfj88995yZlJRU43ibNm0yZ8yYYf761782GzdubPr5+Znt27c3x48fb7766qtmUVFRjWOdd80115jdunUzP/vsswvGFi9ebAYFBZkDBw50Oq67HD161P7/Dx06ZE6bNs189NFHnf43wzAMs0GDBub06dOrHC8qKnL639pLfS926tTJPHbsmFMxgUupM31QUlNTnb7niSeeUFhYWLXja9ascTrmbbfdpoCAgCrHLufxhODg4IuODxkyxOmYixcvVosWLaodd0eel/LJJ5/ohhtu0Llz52p8T1FRkTIyMrR06VKVlJRo+PDhWrx4sT755BN16dLF6RxuuukmTZkyRYmJiZKkoKAgffLJJ/bfNq1cuVILFy5UTk6OU3HLysr0z3/+UxkZGdq6davat2+vsWPHKjk5WZGRkU7n2aBBA33//ff2P8Pg4GDl5uba8zx8+LCsVmuN/1tGRUXpnXfeUc+ePSVJjz/+uLZs2aJt27ZJkt544w3NmDFDX3zxRY1zrOnX5cV+0/dzAQEBeuGFFzR69OgLxsrKytS/f3/997//1d69e2sc02azaebMmcrKylKjRo00ZcoUJSUladmyZXr88cfVoEEDTZw4UVOnTq1RPNM0lZiYqH/961+KiYlRp06dZJqmvvzyS3322WcaPHiwMjMza5yfn5+fDh8+rKuuuqrG99TEk08+qZkzZyo+Pl4BAQFav369Ro4cqZdeeumy4vn5+ckwjIteYxjGRX+j/XOTJk3SBx98oA0bNtgbgp1XVFSk/v37q2PHjnr//fc1f/58JScnXzLmz7937r77bs2fP/+C+M56/vnn9fDDD6tz587y93fsf7x7926nYqWkpNToOmf+rC7152OapgzDqPHfGa1atdK6devUuXPnKsf37t2r/v3769ChQzXO8bwzZ87oww8/1ObNm7V582Z9/PHHKi8vV6dOnfT555/XOE5JSYkmTpyof/7zn5oxY4amTp2q7777TikpKdqxY4fmzJnj9Kx9aGholf8dQ0JCdO211+rRRx91elbms88+U2Jior799lt16NBBr732mgYOHKiysjL5+fmprKxMb775ppKSkmoUz8/PTy+88IIeffRR3XLLLVq5cqUCAwPt487++yDV7Hvx1ltv1dy5c2scE7iUOlOg+Pn5qXfv3mrUqFGNrt+2bZv27dt30anOn3bGrAnDMLR///5qY9bkH/Gfx/vqq68umePw4cOrLYp+7pVXXtGXX355yZiuzvNSnC1QEhMTlZ2drUGDBumee+7RwIED1aBBAzVs2PCyC5SoqCjl5OSodevWkqSrrrpKO3bssL/+6quvdOONN6q4uNjp2Ofl5eVp2bJlWrFihYqKijRw4ECnC2E/Pz8VFRXZf8j6eSHl7D9AjRs31v79+3XNNddIkvr27auEhAQ9/vjjkqQDBw7o+uuvd+oxtTFjxtToumXLltU45ptvvqlRo0bp9ddf1+DBg+3ny8rKNGDAAB05ckRbtmxRVFRUjWNOnTpVL7zwguLj4/Xhhx/qhx9+0JgxY/TRRx/pj3/8o4YNG6YGDRrUON6yZcv00EMP6e2331ZcXJzD2MaNG5WUlKTnn3++yiKrKn5+fgoJCbnk96Ozjxh16NBBjz76qO6//35J0oYNGzRo0CCdPn3a6b/3JOntt9+udiwnJ0fz589XZWWlU49Itm7dWi+88IIGDBhQ5fi6det0++23a8aMGZoxY0aNYl7qe+dyHDx4UGPGjNGePXt0//33X1Cg1DS3n+bYqlUrde/eXRf753n16tU1jrllyxb7/zdNU7fffrv+/ve/q2XLlg7X/frXv65RvMaNG2vPnj1q3759leN5eXm6/vrra/V45NmzZ/Xvf/9b7733nl544QWVlpY69UP1eW+//bbuv/9+RUZGKj8/X7169dLf//53tWrVyulYy5cvr/L8iRMntGvXLr3++ut688037b/kqomEhAT5+/vrscce04oVK7R27VoNGDBAL774oiTpgQce0K5du/TRRx/VKN75r/H//ve/uvPOO2WxWPT2229f9r8PUs2+FydMmKAD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",
      "text/plain": [
       "<Figure size 1000x1600 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "### [EXTRA] Step 8. Visualize the Logits Map Across All Positions\n",
    "import seaborn as sns\n",
    "\n",
    "plt.figure(figsize=(10,16))\n",
    "sns.heatmap(softmaxed, xticklabels=tokenizer.get_vocab())\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 508
    },
    "id": "hbnvVCe4MOdT",
    "outputId": "aa2f909b-b700-4ac4-bdc0-862fe3ed3005"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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vr5SmVwuh6+vL2JjYwttL4RAZGQkrl69io8++khpX3R0NCpXroyaNWti2LBhePjwYb79ZGZmIi0tTWkjIiKid5dOp8AePHiA7Oxs2NraKpXb2triypUr+bZLTU1F1apVkZmZCYVCgaVLl6JNmzbSfn9/f3Tr1g3Ozs64ceMGJk6ciHbt2iE2NhYKhSJPf6GhoZg6dWrJnRgRERGVaTpfA1QUFhYWOHfuHNLT0xEZGYng4GC4uLigRYsWAIDevXtLdevVqwdPT0+4uroiOjoarVu3ztPfhAkTEBwcLL1OS0uDg4OD1s+DiIiIdEOnCZCNjQ0UCgWSkpKUypOSkmBnZ5dvO7lcDjc3NwCAl5cXLl++jNDQUCkBepOLiwtsbGxw/fp1lQmQkZERF0kTERHpEZ2uATI0NETDhg0RGRkpleXk5CAyMhKNGzdWu5+cnBxkZmbmu//27dt4+PAhqlSpUqx4iYiI6N2g8ymw4OBgBAQEwNvbG40aNcKCBQuQkZGBwMBAAEC/fv1QtWpVhIaGAni1Xsfb2xuurq7IzMzE/v37sX79eixbtgwAkJ6ejqlTp+KTTz6BnZ0dbty4gbFjx8LNzU3pMnkiIiLSXzpPgHr16oXk5GRMnjwZiYmJ8PLyQkREhLQwOj4+HnL5/w1UZWRkYPjw4bh9+zZMTExQq1YtbNiwAb169QIAKBQKXLhwAeHh4UhJSYG9vT3atm2L77//ntNcREREBACQCSGEroMoa9LS0mBlZYXU1FRYWlrqOhwi0hKn8fs0qn9zZgctRUJEJUGT3986vxEiERERUWljAkRERER6hwkQERER6R0mQERERKR3mAARERGR3mECRERERHqHCRARERHpHSZAREREpHeYABEREZHeYQJEREREekfnzwIjorcfHylBRG8bjgARERGR3mECRERERHqHCRARERHpHSZAREREpHeYABEREZHeYQJEREREeocJEBEREekdJkBERESkd5gAERERkd5hAkRERER6hwkQERER6R0mQERERKR3mAARERGR3mECRERERHqHCRARERHpHSZAREREpHeYABEREZHeYQJEREREeocJEBEREekdJkBERESkd5gAERERkd5hAkRERER6hwkQERER6Z0ykQAtWbIETk5OMDY2ho+PD06dOpVv3Z07d8Lb2xvW1tYwMzODl5cX1q9fr1RH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zZoFOzs7bN68WeWUGBEREdHbQO0EaPz48TAxMYGbmxvCw8MRHh6ust7OnTtLLDgiIiIibVA7AerXr1+hl8ETERERvQ3UToDWrl2rxTCIiIiISg/vBE1ERER6hwkQERER6R0mQERERKR3mAARERGR3mECRERERHqHCRARERHpHSZAREREpHeYABEREZHeYQJEREREekfnCdCSJUvg5OQEY2Nj+Pj44NSpU/nWvXjxIj755BM4OTlBJpNhwYIFxe6TiIiI9I9OE6CtW7ciODgYISEhOHv2LOrXrw8/Pz/cv39fZf2nT5/CxcUFM2fOhJ2dXYn0SURERPpHpwnQvHnzMHjwYAQGBsLDwwPLly+Hqakp1qxZo7L++++/jzlz5qB3794wMjIqkT6JiIhI/+gsAcrKysKZM2fg6+v7f8HI5fD19UVsbGyp9pmZmYm0tDSljYiIiN5dOkuAHjx4gOzsbNja2iqV29raIjExsVT7DA0NhZWVlbQ5ODgU6fhERET0dtD5IuiyYMKECUhNTZW2hIQEXYdEREREWlROVwe2sbGBQqFAUlKSUnlSUlK+C5y11aeRkVG+a4qIiIjo3aOzESBDQ0M0bNgQkZGRUllOTg4iIyPRuHHjMtMnERERvXt0NgIEAMHBwQgICIC3tzcaNWqEBQsWICMjA4GBgQCAfv36oWrVqggNDQXwapHzpUuXpP/fuXMH586dg7m5Odzc3NTqk4iIiEinCVCvXr2QnJyMyZMnIzExEV5eXoiIiJAWMcfHx0Mu/79Bqrt376JBgwbS67lz52Lu3Llo3rw5oqOj1eqTiIiISKcJEAAEBQUhKChI5b7cpCaXk5MThBDF6pOIiIiIV4ERERGR3mECRERERHqHCRARERHpHSZAREREpHeYABEREZHeYQJEREREeocJEBEREekdJkBERESkd5gAERERkd5hAkRERER6hwkQERER6R0mQERERKR3mAARERGR3mECRERERHqHCRARERHpHSZAREREpHeYABEREZHeYQJEREREeocJEBEREekdJkBERESkd5gAERERkd5hAkRERER6hwkQERER6R0mQERERKR3mAARERGR3mECRERERHqHCRARERHpHSZAREREpHeYABEREZHeYQJEREREeocJEBEREekdJkBERESkd5gAERERkd5hAkRERER6hwkQERER6Z0ykQAtWbIETk5OMDY2ho+PD06dOlVg/Z9//hm1atWCsbEx6tWrh/379yvt79+/P2QymdLm7++vzVMgIiKit4jOE6CtW7ciODgYISEhOHv2LOrXrw8/Pz/cv39fZf3jx4+jT58+GDhwIP766y907doVXbt2xT///KNUz9/fH/fu3ZO2zZs3l8bpEBER0VtA5wnQvHnzMHjwYAQGBsLDwwPLly+Hqakp1qxZo7L+jz/+CH9/f4wZMwa1a9fG999/j/feew+LFy9WqmdkZAQ7OztpK1++fGmcDhEREb0FdJoAZWVl4cyZM/D19ZXK5HI5fH19ERsbq7JNbGysUn0A8PPzy1M/OjoalStXRs2aNTFs2DA8fPgw3zgyMzORlpamtBEREdG7S6cJ0IMHD5CdnQ1bW1ulcltbWyQmJqpsk5iYWGh9f39/rFu3DpGRkZg1axYOHz6Mdu3aITs7W2WfoaGhsLKykjYHB4dinhkRERGVZeV0HYA29O7dW/p/vXr14OnpCVdXV0RHR6N169Z56k+YMAHBwcHS67S0NCZBRERE7zCdjgDZ2NhAoVAgKSlJqTwpKQl2dnYq29jZ2WlUHwBcXFxgY2OD69evq9xvZGQES0tLpY2IiIjeXTpNgAwNDdGwYUNERkZKZTk5OYiMjETjxo1VtmncuLFSfQA4ePBgvvUB4Pbt23j48CGqVKlSMoETERHRW03nV4EFBwdj5cqVCA8Px+XLlzFs2DBkZGQgMDAQANCvXz9MmDBBqj9q1ChERETghx9+wJUrVzBlyhT8+eefCAoKAgCkp6djzJgxOHHiBG7evInIyEh06dIFbm5u8PPz08k5EhERUdmi8zVAvXr1QnJyMiZPnozExER4eXkhIiJCWugcHx8Pufz/8rQPP/wQmzZtwnfffYeJEyfC3d0du3btQt26dQEACoUCFy5cQHh4OFJSUmBvb4+2bdvi+++/h5GRkU7OkYiIiMoWnSdAABAUFCSN4LwpOjo6T1mPHj3Qo0cPlfVNTEzw+++/l2R4RERE9I7R+RQYERERUWljAkRERER6hwkQERER6R0mQERERKR3mAARERGR3mECRERERHqHCRARERHpHSZAREREpHeYABEREZHeYQJEREREeocJEBEREekdJkBERESkd5gAERERkd5hAkRERER6hwkQERER6R0mQERERKR3mAARERGR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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "### [EXTRA] Step 9. Look at a Low Confidence Region\n",
    "\n",
    "plt.bar(tokenizer.get_vocab().keys(), softmaxed[87])\n",
    "plt.ylabel('Normalized Probability')\n",
    "plt.xlabel('Model Vocabulary')\n",
    "plt.title('Target Distribution at Position 87')\n",
    "plt.xticks(rotation='vertical')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "8Mbd_7cQKpGs",
    "outputId": "b52666fb-a609-4aa0-c28a-22ed59b87360"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "human has residue T at position 87\n",
      "chimpanzee has residue T at position 87\n",
      "camel has residue K at position 87\n",
      "rabbit has residue K at position 87\n",
      "pig has residue K at position 87\n",
      "horse has residue A at position 87\n",
      "bovine has residue A at position 87\n",
      "sheep has residue Q at position 87\n"
     ]
    }
   ],
   "source": [
    "for animal in hemoglobin_beta:\n",
    "    print(f'{animal} has residue {hemoglobin_beta[animal][87]} at position 87')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "AGAzH3i5Hjjg"
   },
   "source": [
    "As we can see from the above, at the positions where is lower confidence, there tends to be an increase in diversity among the different species. This aligns well with out understanding of what the categorical distribution would look like if we took calculated the probabilities of each of the amino acids using all the homologous proteins in the protein universe."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "0PMAl8z_HEBr"
   },
   "source": [
    "## **7. Concluding Thougts**<a name=\"conclusion\"></a>\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "7730bHBfziiw"
   },
   "source": [
    "We hope you liked this Tutorial 0 on protein language models. While subsequent tutorials will cover more of the architecture of the protein language models, the learned representations, and the applications of this remarkable class of methods, we hope that this work helps ground you in when going through all the details. Analyzing the input/outputs of pLMs using this lens has helped me understand why performance disparities for certain examples and understand the failure modes that these models can encounter. For a quick reference, some of their strengths and limitations as they fall within the scope of the tutorial are summarized below:\n",
    "\n",
    "### **7.1 Strengths**\n",
    "\n",
    "* pLMs learn co-evolutionary statistics of residues across diverse protein families [[7]](https://doi.org/10.1101/2024.01.30.577970).\n",
    "* They capture information on structure and function from protein sequence alone (most available and accurate modality by far).\n",
    "\n",
    "### **7.2 Limitations**\n",
    "\n",
    "* pLMs demonstrate poorer performance on learning the sequence distributions of highly mutated/variable protein sequences. They bias towards germline sequences [[15]](https://www.biorxiv.org/content/biorxiv/early/2023/09/30/2023.09.28.560044.full.pdf)\n",
    "\n",
    "* Current pLMs are biased towards the sequences derived from canonically studied model organisms [[16]](https://www.biorxiv.org/content/10.1101/2024.03.07.584001v1)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "SoLlGBaOABQM"
   },
   "source": [
    "## Citing this Tutorial\n",
    "        \n",
    "If you found this tutorial useful, please consider citing it as:\n",
    "```\n",
    "@manual{Bioinformatics,\n",
    "title={Protein Language Models (Intuition): A First Look at Modeling Syntax and Semantics of the Known  Protein Universe},\n",
    "organization={DeepChem},\n",
    "author={Karthikeyan, Dhuvarakesh and Menezes, Aaron and de Lope, Elisa Gomez},\n",
    "howpublished = {\\\\url{https://github.com/deepchem/deepchem/blob/master/examples/tutorials/ProteinLM_Tutorial0.ipynb}},\n",
    "year={2024},\n",
    "},\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "aZszIKEF8AG9"
   },
   "source": [
    "## References\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "7DYxgRnVz2yj"
   },
   "source": [
    "[1] Mikolov, T., Chen, K., Corrado, G., & Dean, J. (2013). Efficient Estimation of Word Representations in Vector Space. arXiv [Cs.CL]. Retrieved from http://arxiv.org/abs/1301.3781\n",
    "\n",
    "[2] Jeffrey Pennington, Richard Socher, and Christopher Manning. 2014. GloVe: Global Vectors for Word Representation. In Proceedings of the 2014 Conference on Empirical Methods in Natural Language Processing (EMNLP), pages 1532–1543, Doha, Qatar. Association for Computational Linguistics.\n",
    "\n",
    "[3] Jacob Devlin, Ming-Wei Chang, Kenton Lee, & Kristina Toutanova. (2019). BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding.\n",
    "\n",
    "[4] Rao, R., Meier, J., Sercu, T., Ovchinnikov, S., & Rives, A. (2020). Transformer protein language models are unsupervised structure learners. bioRxiv. doi:10.1101/2020.12.15.422761\n",
    "\n",
    "[5] Ibtehaz, N., Kagaya, Y., & Kihara, D. (2023). Domain-PFP: Protein Function Prediction Using Function-Aware Domain Embedding Representations. bioRxiv. doi:10.1101/2023.08.23.554486\n",
    "\n",
    "[6] Ahmed Elnaggar, Michael Heinzinger, Christian Dallago, Ghalia Rihawi, Yu Wang, Llion Jones, Tom Gibbs, Tamas Feher, Christoph Angerer, Martin Steinegger, Debsindhu Bhowmik, & Burkhard Rost. (2021). ProtTrans: Towards Cracking the Language of Life's Code Through Self-Supervised Deep Learning and High Performance Computing.\n",
    "\n",
    "[7] Zhidian Zhang, Hannah K. Wayment-Steele, Garyk Brixi, Haobo Wang, Matteo Dal Peraro, Dorothee Kern, Sergey Ovchinnikov\n",
    "bioRxiv 2024.01.30.577970; doi: https://doi.org/10.1101/2024.01.30.577970\n",
    "\n",
    "[8] Zeming Lin, Halil Akin, Roshan Rao, Brian Hie, Zhongkai Zhu, Wenting Lu, Nikita Smetanin, Robert Verkuil, Ori Kabeli, Yaniv Shmueli, Allan dos Santos Costa, Maryam Fazel-Zarandi, Tom Sercu, Salvatore Candido, Alexander Rives\n",
    "bioRxiv 2022.07.20.500902; doi: https://doi.org/10.1101/2022.07.20.500902\n",
    "\n",
    "[9] Wang D, Pourmirzaei M, Abbas UL, Zeng S, Manshour N, Esmaili F, Poudel B, Jiang Y, Shao Q, Chen J, Xu D. S-PLM: Structure-aware Protein Language Model via Contrastive Learning between Sequence and Structure. bioRxiv [Preprint]. 2024 May 13:2023.08.06.552203. doi: 10.1101/2023.08.06.552203. PMID: 37609352; PMCID: PMC10441326.\n",
    "\n",
    "[10] Thomas Hayes, Roshan Rao, Halil Akin, Nicholas J. Sofroniew, Deniz Oktay, Zeming Lin, Robert Verkuil, Vincent Q. Tran, Jonathan Deaton, Marius Wiggert, Rohil Badkundri, Irhum Shafkat, Jun Gong, Alexander Derry, Raul S. Molina, Neil Thomas, Yousuf Khan, Chetan Mishra, Carolyn Kim, Liam J. Bartie, Matthew Nemeth, Patrick D. Hsu, Tom Sercu, Salvatore Candido, Alexander Rives\n",
    "bioRxiv 2024.07.01.600583; doi: https://doi.org/10.1101/2024.07.01.600583\n",
    "\n",
    "[11] Roshan M Rao, Jason Liu, Robert Verkuil, Joshua Meier, John Canny, Pieter Abbeel, Tom Sercu, Alexander Rives Proceedings of the 38th International Conference on Machine Learning, PMLR 139:8844-8856, 2021.\n",
    "\n",
    "[12] Jumper, J., Evans, R., Pritzel, A. et al. Highly accurate protein structure prediction with AlphaFold. Nature 596, 583–589 (2021). https://doi.org/10.1038/s41586-021-03819-2\n",
    "\n",
    "[13] Ali, A., Baby, B., Soman, S.S. et al. Molecular insights into the interaction of hemorphin and its targets. Sci Rep 9, 14747 (2019). https://doi.org/10.1038/s41598-019-50619-w\n",
    "\n",
    "[14] Baris E. Suzek, Hongzhan Huang, Peter McGarvey, Raja Mazumder, Cathy H. Wu, UniRef: comprehensive and non-redundant UniProt reference clusters, Bioinformatics, Volume 23, Issue 10, May 2007, Pages 1282–1288, https://doi.org/10.1093/bioinformatics/btm098\n",
    "\n",
    "[15] Shaw, A., Spinner, H., Shin, J., Gurev, S., Rollins, N., & Marks, D. (2023). Removing bias in sequence models of protein fitness. bioRxiv. doi:10.1101/2023.09.28.560044\n",
    "\n",
    "[16] Ding, F., & Steinhardt, J. (2024). Protein language models are biased by unequal sequence sampling across the tree of life. doi:10.1101/2024.03.07.584001"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "ULdCd44eN6EN"
   },
   "source": [
    "# **Congratulations! Time to join the Community!**\n",
    "\n",
    "Congratulations on completing this tutorial notebook! If you enjoyed working through the tutorial, and want to continue working with DeepChem, we encourage you to finish the rest of the tutorials in this series. You can also help the DeepChem community in the following ways:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "KQFEDnQ3OW0A"
   },
   "source": [
    "### **Star DeepChem on [GitHub](https://github.com/deepchem/deepchem)**\n",
    "\n",
    "This helps build awareness of the DeepChem project and the tools for open source drug discovery that we're trying to build."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "G_G077eeOoOB"
   },
   "source": [
    "### **Join the DeepChem Discord**\n",
    "        \n",
    "The DeepChem [Discord](https://discord.gg/7yKPrJjR3T) hosts a number of scientists, developers, and enthusiasts interested in deep learning for the life sciences. Join the conversation!"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "692scyt5OLMx"
   },
   "source": [
    "### **How to contribute to this/other tutorials**\n",
    "\n",
    "If you have any feedback on the given tutorial, please feel free to reach out by opening a github issue on this tutorial. If you'd like to build off this tutorial series, there are a couple of places that would be natural and impactful extensions to this tutorial:\n",
    "\n",
    "1. Attention Mechanisms and their Significance to Protein Language Models\n",
    "2. [Zhang et al's](https://www.biorxiv.org/content/10.1101/2024.01.30.577970v1.abstract) Categorical Jacobian analysis of pLMs\n",
    "\n",
    "Feel free to contribute your own ideas on the matter as well."
   ]
  }
 ],
 "metadata": {
  "colab": {
   "collapsed_sections": [
    "-kt9GAwz9zAP",
    "vKVLg5F10RDb",
    "FyVE65gMuEmv",
    "-4yEH3Gxd1Jm",
    "Jyjr7GIMeJTK"
   ],
   "provenance": []
  },
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.8"
  },
  "widgets": {
   "application/vnd.jupyter.widget-state+json": {
    "01020f39f289443f9fec2eac3636fefd": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "023851e5188d41a890b17cb6e236caa1": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_c909aaaef30d4344ab7b21bf068f9fb3",
      "max": 361,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_26b32664819844e5ab2e4bcad3abc4d1",
      "value": 361
     }
    },
    "0a996c3d341944e3b016fbdfa2482d81": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "0b6885e41bc24fbeb33f88f890d7c3ce": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "0e3ef2c0f23a45d5a77eb31829b92cd0": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "1061921125a64766a930d61f4f5aa2d2": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_eb44fa9b5ceb493da8908c117c1ab1a0",
      "max": 1684058277,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_7afafd68b1c943ab91d2ee5b09e108e8",
      "value": 1684058277
     }
    },
    "155048008c574fdcb1ff904183661740": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "171e49b74fc44fd795052b8d070a3fc1": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_8d3f3e59a89743e882efa436b2e05a66",
      "max": 112,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_2ea4febfba4949d48995c83919987e78",
      "value": 112
     }
    },
    "200f0774813a48beb26ac82c636195ee": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "20f8520f699c48cfaad32973fee81de1": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "26b32664819844e5ab2e4bcad3abc4d1": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "2a80012db2af445fa78fe56d3bbf36ba": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_862a9d6e0c724e6cbb0d88b190baffa7",
       "IPY_MODEL_171e49b74fc44fd795052b8d070a3fc1",
       "IPY_MODEL_d72effedc4034314a7402b0ebc954bc2"
      ],
      "layout": "IPY_MODEL_5abbe798d3504d809a345d40e1553e11"
     }
    },
    "2ea4febfba4949d48995c83919987e78": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "35e1ba83f783465ab6dd2a30deb49287": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_200f0774813a48beb26ac82c636195ee",
      "placeholder": "​",
      "style": "IPY_MODEL_84d0c80748ee4179b64faf373aabefd8",
      "value": "vocab.txt: 100%"
     }
    },
    "38e960076a1544e1839fad1241cca1e8": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "3d72a85022c94b97bdb94d9f46a9b9da": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_ec9e167aea0e4c509ebce436d3450e0e",
       "IPY_MODEL_1061921125a64766a930d61f4f5aa2d2",
       "IPY_MODEL_a9de2c2093a142b49aa6bc8f506c990a"
      ],
      "layout": "IPY_MODEL_9053133a85d0404c8fe3a8dd9435618b"
     }
    },
    "432735bfcf004424b47d29d5ad3cb4fd": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "46a0b691511849039aafe95f3a65257b": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "4b697d612a72423aa65748b65c05537a": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_eaf6cdbe79cb44e499323beaddab75ad",
      "placeholder": "​",
      "style": "IPY_MODEL_e63d5e686add4639937eccc60ff407ec",
      "value": " 361/361 [00:00&lt;00:00, 4.55kB/s]"
     }
    },
    "4d11a4a0e0c240aabf95f1349823b417": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "5537ae1f22b64160b6e7b3b1573b3020": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_6f34f4f6b9a844f4a507abf70abd94e4",
       "IPY_MODEL_bfb40ea607674c6ea98fc43f84833c73",
       "IPY_MODEL_7dd720f97e7943fdb36dae1d5fcb503d"
      ],
      "layout": "IPY_MODEL_0b6885e41bc24fbeb33f88f890d7c3ce"
     }
    },
    "5abbe798d3504d809a345d40e1553e11": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "6463f3b196f44ba5bb9d13c211671517": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "67bde85985a4431b816b56d175c57d0b": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "6f34f4f6b9a844f4a507abf70abd94e4": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_432735bfcf004424b47d29d5ad3cb4fd",
      "placeholder": "​",
      "style": "IPY_MODEL_cf7f11cf14624cc78e61d86ee9783f76",
      "value": "tokenizer_config.json: 100%"
     }
    },
    "7afafd68b1c943ab91d2ee5b09e108e8": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "7dd720f97e7943fdb36dae1d5fcb503d": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_ab4f7ecc4a474bbb94dfc73133782fe0",
      "placeholder": "​",
      "style": "IPY_MODEL_cf96508ebc134d5ea45dfa6868e6c876",
      "value": " 86.0/86.0 [00:00&lt;00:00, 1.03kB/s]"
     }
    },
    "7f1d00dc860d48c69d13ed069c12ef69": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_aa905a48d416488b82ee2e548a6b5aa8",
      "placeholder": "​",
      "style": "IPY_MODEL_d3516e30545f49a9b4b0e18c01fc93ff",
      "value": "config.json: 100%"
     }
    },
    "84d0c80748ee4179b64faf373aabefd8": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "862a9d6e0c724e6cbb0d88b190baffa7": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_c6246afc10434d0dadbddd7d5aee73d4",
      "placeholder": "​",
      "style": "IPY_MODEL_e88d768f704f434e8b71710d723d2ba6",
      "value": "special_tokens_map.json: 100%"
     }
    },
    "8d3f3e59a89743e882efa436b2e05a66": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "8dab74867907459eadfe11b81f8cbe03": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "9053133a85d0404c8fe3a8dd9435618b": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "a854e18172624d309c3359d11ae83d62": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "a9de2c2093a142b49aa6bc8f506c990a": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_46a0b691511849039aafe95f3a65257b",
      "placeholder": "​",
      "style": "IPY_MODEL_e051e38900704299b465b87e8efef207",
      "value": " 1.68G/1.68G [00:22&lt;00:00, 125MB/s]"
     }
    },
    "aa905a48d416488b82ee2e548a6b5aa8": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "ab4f7ecc4a474bbb94dfc73133782fe0": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "b384e03e3218483c95d6391e9f1cd477": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_155048008c574fdcb1ff904183661740",
      "max": 81,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_4d11a4a0e0c240aabf95f1349823b417",
      "value": 81
     }
    },
    "bfb40ea607674c6ea98fc43f84833c73": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_20f8520f699c48cfaad32973fee81de1",
      "max": 86,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_a854e18172624d309c3359d11ae83d62",
      "value": 86
     }
    },
    "c6246afc10434d0dadbddd7d5aee73d4": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "c909aaaef30d4344ab7b21bf068f9fb3": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "cf7f11cf14624cc78e61d86ee9783f76": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "cf96508ebc134d5ea45dfa6868e6c876": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "d3516e30545f49a9b4b0e18c01fc93ff": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "d5f890d8e1984e558c3edbaee1ec0720": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_35e1ba83f783465ab6dd2a30deb49287",
       "IPY_MODEL_b384e03e3218483c95d6391e9f1cd477",
       "IPY_MODEL_e1623cab7d6b488cb8338a593bd505eb"
      ],
      "layout": "IPY_MODEL_0a996c3d341944e3b016fbdfa2482d81"
     }
    },
    "d72effedc4034314a7402b0ebc954bc2": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_38e960076a1544e1839fad1241cca1e8",
      "placeholder": "​",
      "style": "IPY_MODEL_8dab74867907459eadfe11b81f8cbe03",
      "value": " 112/112 [00:00&lt;00:00, 2.17kB/s]"
     }
    },
    "e051e38900704299b465b87e8efef207": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "e1623cab7d6b488cb8338a593bd505eb": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_01020f39f289443f9fec2eac3636fefd",
      "placeholder": "​",
      "style": "IPY_MODEL_0e3ef2c0f23a45d5a77eb31829b92cd0",
      "value": " 81.0/81.0 [00:00&lt;00:00, 1.66kB/s]"
     }
    },
    "e63d5e686add4639937eccc60ff407ec": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "e80b4d94e21a459a85d06dbaf7c29279": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_7f1d00dc860d48c69d13ed069c12ef69",
       "IPY_MODEL_023851e5188d41a890b17cb6e236caa1",
       "IPY_MODEL_4b697d612a72423aa65748b65c05537a"
      ],
      "layout": "IPY_MODEL_fb4026dafa9744ecaf274a9fb0fe3581"
     }
    },
    "e88d768f704f434e8b71710d723d2ba6": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "eaf6cdbe79cb44e499323beaddab75ad": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "eb44fa9b5ceb493da8908c117c1ab1a0": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "ec9e167aea0e4c509ebce436d3450e0e": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_67bde85985a4431b816b56d175c57d0b",
      "placeholder": "​",
      "style": "IPY_MODEL_6463f3b196f44ba5bb9d13c211671517",
      "value": "pytorch_model.bin: 100%"
     }
    },
    "fb4026dafa9744ecaf274a9fb0fe3581": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    }
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
